diff --git a/docs/config/dep-optimization-options.md b/docs/config/dep-optimization-options.md index 6c7f372a0..60fb26cf8 100644 --- a/docs/config/dep-optimization-options.md +++ b/docs/config/dep-optimization-options.md @@ -65,3 +65,10 @@ Optimizing dependencies in build mode is **experimental**. If enabled, it remove If you want to try this build strategy, you can use `optimizeDeps.disabled: false`. `@rollup/plugin-commonjs` can be removed by passing `build.commonjsOptions: { include: [] }`. ::: + +## optimizeDeps.needsInterop + +- **Experimental** +- **Type:** `string[]` + +Forces ESM interop when importing these dependencies. Vite is able to properly detect when a dependency needs interop, so this option isn't generally needed. However, different combinations of dependencies could cause some of them to be prebundled differently. Adding these packages to `needsInterop` can speed up cold start by avoiding full-page reloads. You'll receive a warning if this is the case for one of your dependencies, suggesting to add the package name to this array in your config. diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index a1d88a46e..594730511 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -78,7 +78,7 @@ export interface DepOptimizationConfig { */ exclude?: string[] /** - * Force ESM interop when importing for these dependencies. Some legacy + * Forces ESM interop when importing these dependencies. Some legacy * packages advertise themselves as ESM but use `require` internally * @experimental */