Skip to content

Commit d88c390

Browse files
authored
Merge pull request #1282 from vitejs/sync-e39c7d60-1
docs(en): merge docs-cn/sync-docs into docs-cn/dev @ e39c7d6
2 parents 31bc02d + fc7a66d commit d88c390

3 files changed

Lines changed: 128 additions & 77 deletions

File tree

guide/api-environment-plugins.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,29 @@ interface HotUpdateOptions {
126126
}
127127
```
128128
129+
## 插件中的基于环境的状态 {#per-environment-state-in-plugins}
130+
131+
鉴于相同的插件实例会被用于不同的环境,插件的状态需要以 `this.environment` 作为键来存储。这与生态系统中已使用的模式相同,即使用 `ssr` 布尔值作为键来避免混合客户端和 SSR 模块状态的方式。可以使用 `Map<Environment, State>` 来分别为每个环境保存其对应的状态。注意:为了保持向后兼容性,在未设置 `perEnvironmentStartEndDuringDev: true` 标志时,`buildStart``buildEnd` 仅会针对客户端环境被调用。
132+
133+
```js
134+
function PerEnvironmentCountTransformedModulesPlugin() {
135+
const state = new Map<Environment, { count: number }>()
136+
return {
137+
name: 'count-transformed-modules',
138+
perEnvironmentStartEndDuringDev: true,
139+
buildStart() {
140+
state.set(this.environment, { count: 0 })
141+
},
142+
transform(id) {
143+
state.get(this.environment).count++
144+
},
145+
buildEnd() {
146+
console.log(this.environment.name, state.get(this.environment).count)
147+
}
148+
}
149+
}
150+
```
151+
129152
## 基于环境的插件 {#per-environment-plugins}
130153
131154
插件可以使用 `applyToEnvironment` 函数来定义它适用的环境。

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"feed": "^5.1.0",
1414
"vitepress": "^1.6.3",
1515
"vitepress-plugin-group-icons": "^1.6.0",
16-
"vue": "^3.5.16",
16+
"vue": "^3.5.17",
1717
"@types/node": "^20.9.2",
1818
"@type-challenges/utils": "^0.1.1",
1919
"chalk": "^4.1.2",

0 commit comments

Comments
 (0)