this.environment
in Hooks
フィードバック
フィードバックは 環境 API フィードバックディスカッション までお寄せください。
Vite 6 より前は、client
と ssr
の 2 つの環境のみが利用可能でした。resolveId
、load
、transform
の options.ssr
プラグインフック引数 1 つを使用して、プラグインの作成者は、プラグインフックでモジュールを処理するときに、これらの 2 つの環境を区別できました。Vite 6 では、Vite アプリケーションは必要に応じて任意の数の環境を定義できます。プラグインコンテキストに this.environment
を導入して、フックで現在のモジュールの環境を操作します。
影響範囲: Vite プラグインの作成者
将来の非推奨
this.environment
は v6.0
で導入されました。options.ssr
の非推奨は v7.0
で予定されています。その時点で、プラグインを新しい API に移行することを推奨し始めます。使用状況を特定するには、vite 設定で future.removePluginHookSsrArgument
を "warn"
に設定します。
動機
this.environment
を使用すると、プラグインフックの実装で現在の環境名を確認できるだけでなく、環境設定オプション、モジュールグラフ情報、変換パイプライン (environment.config
、environment.moduleGraph
、environment.transformRequest()
) にもアクセスできます。コンテキストで環境インスタンスを利用できるようにすると、プラグインの作成者は開発サーバー全体に依存しなくて済みます (通常、configureServer
フックを使用して起動時にキャッシュされます)。
移行ガイド
既存のプラグインを短期間で移行するには、resolveId
、load
、transform
のフックで、options.ssr
引数を this.environment.name !== 'client'
に置き換えます。
import { Plugin } from 'vite'
export function myPlugin(): Plugin {
return {
name: 'my-plugin',
resolveId(id, importer, options) {
const isSSR = options.ssr
const isSSR = this.environment.name !== 'client'
if (isSSR) {
// SSR specific logic
} else {
// Client specific logic
}
},
}
}
より堅牢で長期的な実装には、プラグインフックは 複数の環境 を処理する必要があります。環境名に依存するのではなく、詳細な環境オプションを使用します。