From 61a37a523378468849b176264b4d3334547976dd Mon Sep 17 00:00:00 2001 From: Dominik G Date: Wed, 1 Sep 2021 16:09:36 +0200 Subject: [PATCH] feat: enable nested optimization (#157) * wip: enable nested optimization - reorganized test dependencies and added cjs/esm deps * fix: process cjs-only on vite build * chore: add optimization test * chore: update vite peer dep * chore: improve code formatting in _test_dependencies Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> * fix: update vite to 2.5.3 to consume fix for windows problem Co-authored-by: bluwy Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- .changeset/chatty-lemons-yell.md | 7 + package.json | 2 +- .../e2e-tests/_test_dependencies/README.md | 1 + .../_test_dependencies/cjs-and-esm/index.cjs | 3 + .../_test_dependencies/cjs-and-esm/index.mjs | 1 + .../cjs-and-esm/package.json | 19 +++ .../_test_dependencies/cjs-only/index.js | 3 + .../_test_dependencies/cjs-only/package.json | 11 ++ .../_test_dependencies/esm-only/index.js | 3 + .../_test_dependencies/esm-only/package.json | 18 +++ .../svelte-nested/package.json | 18 +++ .../src/components/Message.svelte | 8 ++ .../svelte-nested/src/index.js | 2 + .../svelte-simple}/index.js | 0 .../svelte-simple/package.json | 10 ++ .../src/components/Dependency.svelte | 3 + .../autoprefixer-browerslist/package.json | 4 +- .../autoprefixer-browerslist/src/App.svelte | 2 +- .../autoprefixer-browerslist/vite.config.js | 7 +- .../e2e-tests/configfile-custom/package.json | 4 +- .../configfile-custom/src/App.svelte | 2 +- .../configfile-custom/vite.config.js | 7 +- .../e2e-tests/configfile-esm/package.json | 4 +- .../e2e-tests/configfile-esm/src/App.svelte | 2 +- .../e2e-tests/configfile-esm/vite.config.js | 7 +- .../e2e-tests/custom-extensions/package.json | 2 +- .../hmr-test-dependency/package.json | 7 - packages/e2e-tests/hmr/package.json | 4 +- packages/e2e-tests/hmr/src/App.svelte | 2 +- packages/e2e-tests/hmr/vite.config.js | 10 +- .../package-json-svelte-field.spec.ts | 19 ++- .../package-json-svelte-field/package.json | 4 +- .../package-json-svelte-field/src/App.svelte | 3 +- .../e2e-tests/svelte-preprocess/package.json | 2 +- .../test-dependency-svelte-field/package.json | 16 --- .../src/components/Message.svelte | 6 - .../src/components/svelte.js | 2 - .../e2e-tests/ts-type-import/package.json | 2 +- packages/e2e-tests/vite-ssr/package.json | 2 +- packages/playground/big/package.json | 2 +- .../optimizedeps-include/package.json | 2 +- .../preprocess-with-vite/package.json | 2 +- packages/playground/windicss/package.json | 2 +- packages/vite-plugin-svelte/package.json | 4 +- .../src/utils/__tests__/dependencies.spec.ts | 8 +- .../vite-plugin-svelte/src/utils/options.ts | 5 +- pnpm-lock.yaml | 126 ++++++++++-------- pnpm-workspace.yaml | 1 + 48 files changed, 252 insertions(+), 129 deletions(-) create mode 100644 .changeset/chatty-lemons-yell.md create mode 100644 packages/e2e-tests/_test_dependencies/README.md create mode 100644 packages/e2e-tests/_test_dependencies/cjs-and-esm/index.cjs create mode 100644 packages/e2e-tests/_test_dependencies/cjs-and-esm/index.mjs create mode 100644 packages/e2e-tests/_test_dependencies/cjs-and-esm/package.json create mode 100644 packages/e2e-tests/_test_dependencies/cjs-only/index.js create mode 100644 packages/e2e-tests/_test_dependencies/cjs-only/package.json create mode 100644 packages/e2e-tests/_test_dependencies/esm-only/index.js create mode 100644 packages/e2e-tests/_test_dependencies/esm-only/package.json create mode 100644 packages/e2e-tests/_test_dependencies/svelte-nested/package.json create mode 100644 packages/e2e-tests/_test_dependencies/svelte-nested/src/components/Message.svelte create mode 100644 packages/e2e-tests/_test_dependencies/svelte-nested/src/index.js rename packages/e2e-tests/{hmr-test-dependency => _test_dependencies/svelte-simple}/index.js (100%) create mode 100644 packages/e2e-tests/_test_dependencies/svelte-simple/package.json rename packages/e2e-tests/{hmr-test-dependency => _test_dependencies/svelte-simple}/src/components/Dependency.svelte (68%) delete mode 100644 packages/e2e-tests/hmr-test-dependency/package.json delete mode 100644 packages/e2e-tests/test-dependency-svelte-field/package.json delete mode 100644 packages/e2e-tests/test-dependency-svelte-field/src/components/Message.svelte delete mode 100644 packages/e2e-tests/test-dependency-svelte-field/src/components/svelte.js diff --git a/.changeset/chatty-lemons-yell.md b/.changeset/chatty-lemons-yell.md new file mode 100644 index 000000000..12206e6db --- /dev/null +++ b/.changeset/chatty-lemons-yell.md @@ -0,0 +1,7 @@ +--- +'@sveltejs/vite-plugin-svelte': major +--- + +Enable optimization for nested dependencies of excluded svelte dependencies + +Vite 2.5.3 and above is needed to support this feature. diff --git a/package.json b/package.json index 10f2fd9f5..bf7983cc7 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "svelte": "^3.42.4", "ts-jest": "^27.0.5", "typescript": "^4.4.2", - "vite": "^2.5.2" + "vite": "^2.5.3" }, "lint-staged": { "*.{js,ts,svelte,html,md,svx}": "eslint --fix", diff --git a/packages/e2e-tests/_test_dependencies/README.md b/packages/e2e-tests/_test_dependencies/README.md new file mode 100644 index 000000000..a47ff782e --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/README.md @@ -0,0 +1 @@ +This directory contains packages that are used as dependencies in various e2e tests diff --git a/packages/e2e-tests/_test_dependencies/cjs-and-esm/index.cjs b/packages/e2e-tests/_test_dependencies/cjs-and-esm/index.cjs new file mode 100644 index 000000000..ae85bf94c --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/cjs-and-esm/index.cjs @@ -0,0 +1,3 @@ +module.exports = { + cjs_and_esm: () => 'cjs' +} diff --git a/packages/e2e-tests/_test_dependencies/cjs-and-esm/index.mjs b/packages/e2e-tests/_test_dependencies/cjs-and-esm/index.mjs new file mode 100644 index 000000000..d6e98b33e --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/cjs-and-esm/index.mjs @@ -0,0 +1 @@ +export function cjs_and_esm() { return 'esm' }; diff --git a/packages/e2e-tests/_test_dependencies/cjs-and-esm/package.json b/packages/e2e-tests/_test_dependencies/cjs-and-esm/package.json new file mode 100644 index 000000000..5c82f3371 --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/cjs-and-esm/package.json @@ -0,0 +1,19 @@ +{ + "version": "1.0.0", + "private": true, + "name": "e2e-test-dep-cjs-and-esm", + "main": "index.cjs", + "module": "index.mjs", + "files": [ + "package.json", + "index.mjs", + "index.cjs" + ], + "exports":{ + ".": { + "import": "./index.mjs", + "require": "./index.cjs" + }, + "./package.json": "./package.json" + } +} diff --git a/packages/e2e-tests/_test_dependencies/cjs-only/index.js b/packages/e2e-tests/_test_dependencies/cjs-only/index.js new file mode 100644 index 000000000..41cb0f071 --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/cjs-only/index.js @@ -0,0 +1,3 @@ +module.exports = { + cjs: () => 'cjs' +}; diff --git a/packages/e2e-tests/_test_dependencies/cjs-only/package.json b/packages/e2e-tests/_test_dependencies/cjs-only/package.json new file mode 100644 index 000000000..7ee2b0d9e --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/cjs-only/package.json @@ -0,0 +1,11 @@ +{ + "version": "1.0.0", + "private": true, + "name": "e2e-test-dep-cjs-only", + "main": "index.js", + "files": [ + "package.json", + "index.js" + ], + "type": "commonjs" +} diff --git a/packages/e2e-tests/_test_dependencies/esm-only/index.js b/packages/e2e-tests/_test_dependencies/esm-only/index.js new file mode 100644 index 000000000..017363681 --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/esm-only/index.js @@ -0,0 +1,3 @@ +export function esm() { + return 'esm'; +} diff --git a/packages/e2e-tests/_test_dependencies/esm-only/package.json b/packages/e2e-tests/_test_dependencies/esm-only/package.json new file mode 100644 index 000000000..c3f404496 --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/esm-only/package.json @@ -0,0 +1,18 @@ +{ + "version": "1.0.0", + "private": true, + "name": "e2e-test-dep-esm-only", + "main": "index.js", + "module": "index.js", + "files": [ + "package.json", + "index.cjs" + ], + "exports":{ + ".": { + "import": "./index.js" + }, + "./package.json": "./package.json" + }, + "type": "module" +} diff --git a/packages/e2e-tests/_test_dependencies/svelte-nested/package.json b/packages/e2e-tests/_test_dependencies/svelte-nested/package.json new file mode 100644 index 000000000..1538b2d4b --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/svelte-nested/package.json @@ -0,0 +1,18 @@ +{ + "version": "1.0.0", + "private": true, + "name": "e2e-test-dep-svelte-nested", + "svelte": "src/index.js", + "main": "src/index.js", + "files": [ + "src", + "package.json" + ], + "exports": { + "./package.json": "./package.json" + }, + "dependencies": { + "e2e-test-dep-svelte-simple": "workspace:*", + "e2e-test-dep-cjs-and-esm": "workspace:*" + } +} diff --git a/packages/e2e-tests/_test_dependencies/svelte-nested/src/components/Message.svelte b/packages/e2e-tests/_test_dependencies/svelte-nested/src/components/Message.svelte new file mode 100644 index 000000000..b5f79014c --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/svelte-nested/src/components/Message.svelte @@ -0,0 +1,8 @@ + + +
{message}
+
{cjs_and_esm()}
diff --git a/packages/e2e-tests/_test_dependencies/svelte-nested/src/index.js b/packages/e2e-tests/_test_dependencies/svelte-nested/src/index.js new file mode 100644 index 000000000..15a396fe5 --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/svelte-nested/src/index.js @@ -0,0 +1,2 @@ +import Message from './components/Message.svelte'; +export { Message }; diff --git a/packages/e2e-tests/hmr-test-dependency/index.js b/packages/e2e-tests/_test_dependencies/svelte-simple/index.js similarity index 100% rename from packages/e2e-tests/hmr-test-dependency/index.js rename to packages/e2e-tests/_test_dependencies/svelte-simple/index.js diff --git a/packages/e2e-tests/_test_dependencies/svelte-simple/package.json b/packages/e2e-tests/_test_dependencies/svelte-simple/package.json new file mode 100644 index 000000000..3116ab0c5 --- /dev/null +++ b/packages/e2e-tests/_test_dependencies/svelte-simple/package.json @@ -0,0 +1,10 @@ +{ + "version": "1.0.0", + "private": true, + "name": "e2e-test-dep-svelte-simple", + "main": "index.js", + "svelte": "index.js", + "dependencies": { + "e2e-test-dep-cjs-only": "workspace:*" + } +} diff --git a/packages/e2e-tests/hmr-test-dependency/src/components/Dependency.svelte b/packages/e2e-tests/_test_dependencies/svelte-simple/src/components/Dependency.svelte similarity index 68% rename from packages/e2e-tests/hmr-test-dependency/src/components/Dependency.svelte rename to packages/e2e-tests/_test_dependencies/svelte-simple/src/components/Dependency.svelte index 5cbbb78e9..812a159e3 100644 --- a/packages/e2e-tests/hmr-test-dependency/src/components/Dependency.svelte +++ b/packages/e2e-tests/_test_dependencies/svelte-simple/src/components/Dependency.svelte @@ -1,9 +1,12 @@
{label}
sticky-dep
+
{cjs()}