条件付き輸出におけるネストされた条件のViteの取り扱いは、RollupやWebpackなどの他の現代のバンドラーに似ていますが、いくつかの重要な違いがあります。
##ネストと特異性の順序
-VITE:条件は、「package.json」の「エクスポート」フィールドにネストできます。それらは、最も特定のものから最も特定のものに指定する必要があります。 Viteは、許可条件リスト[1]にある最初の条件と一致します。
- ロールアップ:ロールアップは、Viteと同じ特異性順序に従って、「エクスポート」フィールドのネストされた条件をサポートします[2]。
-webpack:webpackは、「エクスポート」フィールドのネストされた条件もサポートしており、ViteやRollupと同じ特異性順序が必要です[3]。
##許可条件
-Vite:「Import」、「Module」、「Browser」、「Default」、および「生産」や「開発」などの環境固有の条件を含む許可条件の事前定義リストがあります。 「Resolve.Conditions」設定オプションは、[1]を追加することができます。
- ロールアップ:「preservemodules」および「preservemodulesroot」オプションを介してカスタム条件を指定できます[2]。
-webpack: `Resolve.ConditionNames`オプション[3]を使用してカスタム条件を定義できます。
##誤った条件の処理
-VITE:条件が正しく構造化されていない場合、またはViteが誤ったエクスポートを選択した場合、ランタイムエラーにつながる可能性があります。 「エクスポート」フィールドの慎重な構造化が重要です[1]。
- ロールアップ:ロールアップは、「エクスポート」フィールドで問題に遭遇した場合に警告を記録しますが、エントリポイントを解決する場合があります[2]。
-webpack:「エクスポート」フィールドが奇形である場合、またはエントリポイントを解決できない場合、Webpackはエラーを記録します[3]。
Monorepoサポート
-Vite:リンクされた依存関係をモノレポの依存関係を自動的に検出し、それらをソースコードとして扱い、それらをバンドする代わりに依存関係を分析します[4]。
- ロールアップ: `@rollup/plugin-alias`などのプラグインを使用して、モノレポでリンクされた依存関係を処理する必要があります[2]。
-webpack:「拡張型リゾルブ」などのプラグインを使用して、モノレポのリンク依存関係を処理する必要があります[3]。
要約すると、Viteのネストされた条件の取り扱いは他のバンドラーに似ていますが、自動モノレポのサポートやより堅牢な許可条件リストなど、いくつかの利点があります。ただし、すべてのバンドラーは、問題を回避するために「エクスポート」フィールドを慎重に構造化する必要があります。
引用:[1] https://v2.vitejs.dev/config/
[2] https://vitejs.dev/guide/features
[3] https://vitejs.dev/guide/dep-pre-bundling
[4] https://vitejs.dev/guide/build
[5] https://vitejs.dev/config/shared-options