From 983f95503c76f50cce0ef9a6d6227f8216427527 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Tue, 5 Nov 2024 09:59:21 +0900 Subject: [PATCH 1/2] feat(resolve)!: allow removing conditions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolve #1678 https://github.com/vitejs/vite/commit/d002e7d05a0f23110f9185b39222819bcdfffc16 の反映です。 --- config/shared-options.md | 6 ++++-- config/ssr-options.md | 5 ++--- guide/migration.md | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/config/shared-options.md b/config/shared-options.md index 85d80836..d299fd57 100644 --- a/config/shared-options.md +++ b/config/shared-options.md @@ -117,6 +117,7 @@ SSR ビルドの場合、`build.rollupOptions.output` で設定された ESM ビ ## resolve.conditions - **型:** `string[]` +- **デフォルト:** `['module', 'browser', 'development|production']` パッケージからの[条件付きエクスポート](https://nodejs.org/api/packages.html#packages_conditional_exports)解決する際に許可される追加の条件。 @@ -133,9 +134,10 @@ SSR ビルドの場合、`build.rollupOptions.output` で設定された ESM ビ } ``` -ここで、`import` と `require` は「条件」です。条件はネストさせることができ、最も具体的なものから最も具体的でないものまで指定する必要があります。 - Vite には「許可された条件」のリストがあり、許可されたリストにある最初の条件と一致します。 デフォルトで許可される条件は、`import`、`module`、`browser`、`default` と、現在のモードに基づく `production/development` です。`resolve.conditions` 設定オプションを使用すると、追加の許可条件を指定できます。 +`development|production` は、`process.env.NODE_ENV` の値に応じて `production` または `development` に置換される特殊な値です。`process.env.NODE_ENV === 'production'` の場合には `production` に置換され、それ以外の場合は `development` に置換されます。 + +要件が満たされている場合は、`import`、`require`、`default` の条件が常に適用されることに注意してください。 :::warning サブパスのエクスポートの解決 エクスポートのキーが "/" で終わるのは Node では非推奨で、うまく動作しない可能性があります。代わりに [`*` サブパスパターン](https://nodejs.org/api/packages.html#package-entry-points) を使用するよう、パッケージ作者に連絡してください。 diff --git a/config/ssr-options.md b/config/ssr-options.md index a97d1df3..3363b131 100644 --- a/config/ssr-options.md +++ b/config/ssr-options.md @@ -34,15 +34,14 @@ SSR サーバーのビルドターゲット。 ## ssr.resolve.conditions - **型:** `string[]` +- **デフォルト:** `['module', 'node', 'development|production']`(`ssr.target === 'webworker'` の場合は `['module', 'browser', 'development|production']`) - **関連:** [Resolve Conditions](./shared-options.md#resolve-conditions) -デフォルトはルートの [`resolve.conditions`](./shared-options.md#resolve-conditions) です。 - これらの条件はプラグインパイプラインで使用され、SSR ビルド時に外部化されていない依存関係にのみ影響します。外部化されたインポートに影響を与えるには `ssr.resolve.externalConditions` を使用してください。 ## ssr.resolve.externalConditions - **型:** `string[]` -- **デフォルト:** `[]` +- **デフォルト:** `['node']` 外部化された依存関係の SSR インポート(`ssrLoadModule` を含む)の際に使用される条件。 diff --git a/guide/migration.md b/guide/migration.md index 6bb6bde6..cb08db2e 100644 --- a/guide/migration.md +++ b/guide/migration.md @@ -12,6 +12,23 @@ Vite の実装変更に伴い、いくつかの内部 API が削除されまし ## 全般的な変更 +### `resolve.conditions` のデフォルト値 + +この変更は、[`resolve.conditions`](/config/shared-options#resolve-conditions) / [`ssr.resolve.conditions`](/config/ssr-options#ssr-resolve-conditions) / [`ssr.resolve.externalConditions`](/config/ssr-options#ssr-resolve-externalconditions) を設定していなかったユーザーには影響しません。 + +Vite 5 では、`resolve.conditions` のデフォルト値は `[]` であり、いくつかの条件が内部的に追加されていました。`ssr.resolve.conditions` のデフォルト値は `resolve.conditions` の値でした。 + +Vite 6 からは、一部の条件が内部的に追加されなくなったため、設定の値に含める必要があります。 +内部的に追加されなくなった条件は次のとおりです。 + +- `resolve.conditions` では `['module', 'browser', 'development|production']` +- `ssr.resolve.conditions` では `['module', 'node', 'development|production']` + +これらのオプションに対するデフォルト値は対応する値に更新され、`ssr.resolve.conditions` は `resolve.conditions` をデフォルト値として使用しなくなりました。`development|production` は、`process.env.NODE_ENV` の値に応じて `production` または `development` に置換される特殊な値であることに注意してください。 + +`resolve.conditions` または `ssr.resolve.conditions` にカスタムの値を指定していた場合は、それらを新しい条件に含むように更新する必要があります。 +たとえば、これまで `resolve.conditions` に `['custom']` と指定していた場合は、代わりに `['custom', 'module', 'browser', 'development|production']` と指定する必要があります。 + ### JSON stringify Vite 5 では、[`json.stringify: true`](/config/shared-options#json-stringify) が設定されている場合、[`json.namedExports`](/config/shared-options#json-namedexports) が無効になっていました。 From 82d26d70fad53daaa7668082c9a7b2416970a40c Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Wed, 6 Nov 2024 12:36:29 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E5=89=8A=E9=99=A4=E3=81=99=E3=82=8B?= =?UTF-8?q?=E8=A1=8C=E3=81=AE=E3=83=9F=E3=82=B9=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/shared-options.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/shared-options.md b/config/shared-options.md index d299fd57..4c82e74c 100644 --- a/config/shared-options.md +++ b/config/shared-options.md @@ -134,7 +134,8 @@ SSR ビルドの場合、`build.rollupOptions.output` で設定された ESM ビ } ``` -Vite には「許可された条件」のリストがあり、許可されたリストにある最初の条件と一致します。 デフォルトで許可される条件は、`import`、`module`、`browser`、`default` と、現在のモードに基づく `production/development` です。`resolve.conditions` 設定オプションを使用すると、追加の許可条件を指定できます。 +ここで、`import` と `require` は「条件」です。条件はネストさせることができ、最も具体的なものから最も具体的でないものまで指定する必要があります。 + `development|production` は、`process.env.NODE_ENV` の値に応じて `production` または `development` に置換される特殊な値です。`process.env.NODE_ENV === 'production'` の場合には `production` に置換され、それ以外の場合は `development` に置換されます。 要件が満たされている場合は、`import`、`require`、`default` の条件が常に適用されることに注意してください。