From f61ec46a077b92f5b1ce99bdac472a4c32052a13 Mon Sep 17 00:00:00 2001 From: Bjorn Lu <34116392+bluwy@users.noreply.github.com> Date: Tue, 31 Aug 2021 17:57:54 +0800 Subject: [PATCH] feat(optimizer): nested optimization (#4634) --- docs/config/index.md | 11 ++- .../playground/dynamic-import/css/index.css | 4 +- .../nested-deps/__tests__/nested-deps.spec.ts | 2 + packages/playground/nested-deps/index.html | 10 +++ packages/playground/nested-deps/package.json | 3 +- .../nested-deps/test-package-d/index.js | 3 + .../nested-deps/test-package-d/package.json | 8 ++ .../test-package-d-nested/index.js | 1 + .../test-package-d-nested/package.json | 5 ++ .../playground/nested-deps/vite.config.js | 6 +- .../__tests__/optimize-deps.spec.ts | 4 + packages/playground/optimize-deps/index.html | 6 ++ .../optimize-deps/nested-exclude/index.js | 3 + .../nested-exclude/nested-include/index.js | 2 + .../nested-include/package.json | 5 ++ .../optimize-deps/nested-exclude/package.json | 8 ++ .../playground/optimize-deps/package.json | 1 + .../playground/optimize-deps/vite.config.js | 4 +- packages/vite/src/node/optimizer/index.ts | 10 ++- .../vite/src/node/plugins/clientInjections.ts | 2 +- packages/vite/src/node/plugins/preAlias.ts | 4 +- packages/vite/src/node/plugins/resolve.ts | 80 +++++++++++++++---- packages/vite/src/node/utils.ts | 20 ++++- yarn.lock | 15 ++++ 24 files changed, 189 insertions(+), 28 deletions(-) create mode 100644 packages/playground/nested-deps/test-package-d/index.js create mode 100644 packages/playground/nested-deps/test-package-d/package.json create mode 100644 packages/playground/nested-deps/test-package-d/test-package-d-nested/index.js create mode 100644 packages/playground/nested-deps/test-package-d/test-package-d-nested/package.json create mode 100644 packages/playground/optimize-deps/nested-exclude/index.js create mode 100644 packages/playground/optimize-deps/nested-exclude/nested-include/index.js create mode 100644 packages/playground/optimize-deps/nested-exclude/nested-include/package.json create mode 100644 packages/playground/optimize-deps/nested-exclude/package.json diff --git a/docs/config/index.md b/docs/config/index.md index 428dc74cdf6bc4..5cd1a23774400c 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -713,7 +713,16 @@ createServer() Dependencies to exclude from pre-bundling. :::warning CommonJS - CommonJS dependencies should not be excluded from optimization. If an ESM dependency has a nested CommonJS dependency, it should not be excluded as well. + CommonJS dependencies should not be excluded from optimization. If an ESM dependency is excluded from optimization, but has a nested CommonJS dependency, the CommonJS dependency should be added to `optimizeDeps.include`. Example: + + ```js + export default defineConfig({ + optimizeDeps: { + include: ['esm-dep > cjs-dep'] + } + }) + ``` + ::: ### optimizeDeps.include diff --git a/packages/playground/dynamic-import/css/index.css b/packages/playground/dynamic-import/css/index.css index 9d3790dabe47cf..07b64e1de286d0 100644 --- a/packages/playground/dynamic-import/css/index.css +++ b/packages/playground/dynamic-import/css/index.css @@ -1,2 +1,2 @@ -.css { box-sizing: border-box; } -.view { color: red; } +.css { box-sizing: border-box; } +.view { color: red; } diff --git a/packages/playground/nested-deps/__tests__/nested-deps.spec.ts b/packages/playground/nested-deps/__tests__/nested-deps.spec.ts index 69f80bbcf4c6eb..dac548d0e4193e 100644 --- a/packages/playground/nested-deps/__tests__/nested-deps.spec.ts +++ b/packages/playground/nested-deps/__tests__/nested-deps.spec.ts @@ -5,4 +5,6 @@ test('handle nested package', async () => { const c = await page.textContent('.c') expect(c).toBe('es-C@1.0.0') expect(await page.textContent('.side-c')).toBe(c) + expect(await page.textContent('.d')).toBe('D@1.0.0') + expect(await page.textContent('.nested-d')).toBe('D-nested@1.0.0') }) diff --git a/packages/playground/nested-deps/index.html b/packages/playground/nested-deps/index.html index 86a7268cd169d7..3467c3d9e425af 100644 --- a/packages/playground/nested-deps/index.html +++ b/packages/playground/nested-deps/index.html @@ -13,11 +13,18 @@

direct dependency C

side dependency C


 
+

direct dependency D

+

+
+

nested dependency nested-D (dep of D)

+

+