コンテンツにスキップ

this.environment in Hooks

フィードバック

フィードバックは 環境 API フィードバックディスカッション までお寄せください。

Vite 6 より前は、clientssr の 2 つの環境のみが利用可能でした。resolveIdloadtransformoptions.ssr プラグインフック引数 1 つを使用して、プラグインの作成者は、プラグインフックでモジュールを処理するときに、これらの 2 つの環境を区別できました。Vite 6 では、Vite アプリケーションは必要に応じて任意の数の環境を定義できます。プラグインコンテキストに this.environment を導入して、フックで現在のモジュールの環境を操作します。

影響範囲: Vite プラグインの作成者

将来の非推奨

this.environmentv6.0 で導入されました。options.ssr の非推奨は v7.0 で予定されています。その時点で、プラグインを新しい API に移行することを推奨し始めます。使用状況を特定するには、vite 設定で future.removePluginHookSsrArgument"warn" に設定します。

動機

this.environment を使用すると、プラグインフックの実装で現在の環境名を確認できるだけでなく、環境設定オプション、モジュールグラフ情報、変換パイプライン (environment.configenvironment.moduleGraphenvironment.transformRequest()) にもアクセスできます。コンテキストで環境インスタンスを利用できるようにすると、プラグインの作成者は開発サーバー全体に依存しなくて済みます (通常、configureServer フックを使用して起動時にキャッシュされます)。

移行ガイド

既存のプラグインを短期間で移行するには、resolveIdloadtransform のフックで、options.ssr 引数を this.environment.name !== 'client' に置き換えます。

ts
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
      }
    },
  }
}

より堅牢で長期的な実装には、プラグインフックは 複数の環境 を処理する必要があります。環境名に依存するのではなく、詳細な環境オプションを使用します。

MIT ライセンスのもとでリリースされています (ccee3d7c)