Skip to content

Commit 1e91e44

Browse files
authored
docs: per-environment state in plugins (#2033)
1 parent 6fe3b2e commit 1e91e44

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

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>` を使用して、各環境の状態を個別に保持できます。後方互換性のため、`buildStart` および `buildEnd` は、`perEnvironmentStartEndDuringDev: true` フラグがない場合、クライアント環境に対してのみ呼び出されることに注意してください。
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` 関数で、適用する環境を定義できます。

0 commit comments

Comments
 (0)