ビルド中の共有プラグイン
フィードバック
環境 API フィードバックディスカッションでフィードバックをお寄せください。
ビルド中の共有プラグインを参照してください。
影響スコープ: Vite プラグイン作者
今後のデフォルト変更
builder.sharedConfigBuild
は v6.0
で最初に導入されました。プラグインが共有構成でどのように機能するかを確認するには、true に設定できます。プラグインエコシステムの準備が整ったら、今後のメジャーリリースでデフォルトを変更することについてフィードバックを求めています。
動機
開発とビルドのプラグインパイプラインを調整します。
移行ガイド
複数の環境でプラグインを共有できるようにするには、プラグインの状態を現在の環境でキーにする必要があります。次の形式のプラグインは、すべての環境で変換されたモジュールの数をカウントします。
js
function CountTransformedModulesPlugin() {
let transformedModules
return {
name: 'count-transformed-modules',
buildStart() {
transformedModules = 0
},
transform(id) {
transformedModules++
},
buildEnd() {
console.log(transformedModules)
},
}
}
代わりに各環境で変換されたモジュールの数を数えたい場合は、マップを保持する必要があります。
js
function PerEnvironmentCountTransformedModulesPlugin() {
const state = new Map<Environment, { count: number }>()
return {
name: 'count-transformed-modules',
perEnvironmentStartEndDuringDev: true,
buildStart() {
state.set(this.environment, { count: 0 })
}
transform(id) {
state.get(this.environment).count++
},
buildEnd() {
console.log(this.environment.name, state.get(this.environment).count)
}
}
}
このパターンを簡素化するために、Vite は perEnvironmentState
ヘルパーをエクスポートしています
js
function PerEnvironmentCountTransformedModulesPlugin() {
const state = perEnvironmentState<{ count: number }>(() => ({ count: 0 }))
return {
name: 'count-transformed-modules',
perEnvironmentStartEndDuringDev: true,
buildStart() {
state(this).count = 0
}
transform(id) {
state(this).count++
},
buildEnd() {
console.log(this.environment.name, state(this).count)
}
}
}