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 @@ +<script> + export let id = 'id'; + export let message = ''; + import { cjs_and_esm } from 'e2e-test-dep-cjs-and-esm'; +</script> + +<div {id}>{message}</div> +<div id="cjs-and-esm">{cjs_and_esm()}</div> 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 @@ <script> const label = 'dependency-import'; + import * as cjsOnly from 'e2e-test-dep-cjs-only'; + const { cjs } = cjsOnly; </script> <div id="dependency-import"><span class="label">{label}</span></div> <div id="sticky-dep" class="sticky-dep">sticky-dep</div> +<div id="cjs-only-dependency">{cjs()}</div> <style> .label { diff --git a/packages/e2e-tests/autoprefixer-browerslist/package.json b/packages/e2e-tests/autoprefixer-browerslist/package.json index 2a89b473f..601b6ea9b 100644 --- a/packages/e2e-tests/autoprefixer-browerslist/package.json +++ b/packages/e2e-tests/autoprefixer-browerslist/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "e2e-tests-hmr-test-dependency": "workspace:*" + "e2e-test-dep-svelte-simple": "workspace:*" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", @@ -17,6 +17,6 @@ "postcss-load-config": "^3.1.0", "svelte": "^3.42.4", "svelte-preprocess": "^4.8.0", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/autoprefixer-browerslist/src/App.svelte b/packages/e2e-tests/autoprefixer-browerslist/src/App.svelte index 87194dbb5..e5b4f62b2 100644 --- a/packages/e2e-tests/autoprefixer-browerslist/src/App.svelte +++ b/packages/e2e-tests/autoprefixer-browerslist/src/App.svelte @@ -1,5 +1,5 @@ <script> - import Dependency from 'e2e-tests-hmr-test-dependency'; + import Dependency from 'e2e-test-dep-svelte-simple'; </script> <div class="sticky" id="#sticky">sticky-div</div> diff --git a/packages/e2e-tests/autoprefixer-browerslist/vite.config.js b/packages/e2e-tests/autoprefixer-browerslist/vite.config.js index f8d6d1b5c..ddc3d3a4e 100644 --- a/packages/e2e-tests/autoprefixer-browerslist/vite.config.js +++ b/packages/e2e-tests/autoprefixer-browerslist/vite.config.js @@ -7,7 +7,12 @@ module.exports = defineConfig(() => { build: { // make build faster by skipping transforms and minification target: 'esnext', - minify: false + minify: false, + commonjsOptions: { + // pnpm only symlinks packages, and vite wont process cjs deps not in + // node_modules, so we add the cjs dep here + include: [/node_modules/, /cjs-only/] + } }, server: { watch: { diff --git a/packages/e2e-tests/configfile-custom/package.json b/packages/e2e-tests/configfile-custom/package.json index 3306e277c..4ac77c4b0 100644 --- a/packages/e2e-tests/configfile-custom/package.json +++ b/packages/e2e-tests/configfile-custom/package.json @@ -8,11 +8,11 @@ "preview": "vite preview" }, "dependencies": { - "e2e-tests-hmr-test-dependency": "workspace:*" + "e2e-test-dep-svelte-simple": "workspace:*" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/configfile-custom/src/App.svelte b/packages/e2e-tests/configfile-custom/src/App.svelte index 761bc15e7..2a0453eda 100644 --- a/packages/e2e-tests/configfile-custom/src/App.svelte +++ b/packages/e2e-tests/configfile-custom/src/App.svelte @@ -1,5 +1,5 @@ <script> - import Dependency from 'e2e-tests-hmr-test-dependency'; + import Dependency from 'e2e-test-dep-svelte-simple'; import Child from './lib/Child.svelte'; </script> diff --git a/packages/e2e-tests/configfile-custom/vite.config.js b/packages/e2e-tests/configfile-custom/vite.config.js index af0e5ac20..b393eb3ee 100644 --- a/packages/e2e-tests/configfile-custom/vite.config.js +++ b/packages/e2e-tests/configfile-custom/vite.config.js @@ -8,7 +8,12 @@ module.exports = defineConfig(() => { build: { // make build faster by skipping transforms and minification target: 'esnext', - minify: false + minify: false, + commonjsOptions: { + // pnpm only symlinks packages, and vite wont process cjs deps not in + // node_modules, so we add the cjs dep here + include: [/node_modules/, /cjs-only/] + } }, server: { watch: { diff --git a/packages/e2e-tests/configfile-esm/package.json b/packages/e2e-tests/configfile-esm/package.json index 398e44f65..f478359c5 100644 --- a/packages/e2e-tests/configfile-esm/package.json +++ b/packages/e2e-tests/configfile-esm/package.json @@ -8,13 +8,13 @@ "preview": "vite preview" }, "dependencies": { - "e2e-tests-hmr-test-dependency": "workspace:*" + "e2e-test-dep-svelte-simple": "workspace:*" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", "svelte": "^3.42.4", "svelte-preprocess": "^4.8.0", - "vite": "^2.5.2" + "vite": "^2.5.3" }, "type": "module" } diff --git a/packages/e2e-tests/configfile-esm/src/App.svelte b/packages/e2e-tests/configfile-esm/src/App.svelte index 761bc15e7..2a0453eda 100644 --- a/packages/e2e-tests/configfile-esm/src/App.svelte +++ b/packages/e2e-tests/configfile-esm/src/App.svelte @@ -1,5 +1,5 @@ <script> - import Dependency from 'e2e-tests-hmr-test-dependency'; + import Dependency from 'e2e-test-dep-svelte-simple'; import Child from './lib/Child.svelte'; </script> diff --git a/packages/e2e-tests/configfile-esm/vite.config.js b/packages/e2e-tests/configfile-esm/vite.config.js index 8fc785c12..28f6bbca5 100644 --- a/packages/e2e-tests/configfile-esm/vite.config.js +++ b/packages/e2e-tests/configfile-esm/vite.config.js @@ -8,7 +8,12 @@ export default defineConfig(({ command, mode }) => { build: { // make build faster by skipping transforms and minification target: 'esnext', - minify: false + minify: false, + commonjsOptions: { + // pnpm only symlinks packages, and vite wont process cjs deps not in + // node_modules, so we add the cjs dep here + include: [/node_modules/, /cjs-only/] + } }, server: { watch: { diff --git a/packages/e2e-tests/custom-extensions/package.json b/packages/e2e-tests/custom-extensions/package.json index 7e2bd4336..209ae0720 100644 --- a/packages/e2e-tests/custom-extensions/package.json +++ b/packages/e2e-tests/custom-extensions/package.json @@ -10,6 +10,6 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/hmr-test-dependency/package.json b/packages/e2e-tests/hmr-test-dependency/package.json deleted file mode 100644 index 249376295..000000000 --- a/packages/e2e-tests/hmr-test-dependency/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": "1.0.0", - "private": true, - "name": "e2e-tests-hmr-test-dependency", - "main": "index.js", - "svelte": "index.js" -} diff --git a/packages/e2e-tests/hmr/package.json b/packages/e2e-tests/hmr/package.json index 8112e19f3..8ade6c0a0 100644 --- a/packages/e2e-tests/hmr/package.json +++ b/packages/e2e-tests/hmr/package.json @@ -8,12 +8,12 @@ "preview": "vite preview" }, "dependencies": { - "e2e-tests-hmr-test-dependency": "workspace:*" + "e2e-test-dep-svelte-simple": "workspace:*" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", "node-fetch": "^2.6.1", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/hmr/src/App.svelte b/packages/e2e-tests/hmr/src/App.svelte index 24b83bb32..5f7a4b9d4 100644 --- a/packages/e2e-tests/hmr/src/App.svelte +++ b/packages/e2e-tests/hmr/src/App.svelte @@ -1,6 +1,6 @@ <script> import StaticImport from './components/StaticImport.svelte'; - import Dependency from 'e2e-tests-hmr-test-dependency'; + import Dependency from 'e2e-test-dep-svelte-simple'; import HmrTest from './components/HmrTest.svelte'; let dynamicImportComponent; function importDynamic() { diff --git a/packages/e2e-tests/hmr/vite.config.js b/packages/e2e-tests/hmr/vite.config.js index 41d0c40e1..c5708a92a 100644 --- a/packages/e2e-tests/hmr/vite.config.js +++ b/packages/e2e-tests/hmr/vite.config.js @@ -3,13 +3,15 @@ const { svelte } = require('@sveltejs/vite-plugin-svelte'); module.exports = defineConfig(({ command, mode }) => { return { - optimizeDeps: { - exclude: ['e2e-tests-hmr-test-dependency'] - }, plugins: [svelte()], build: { minify: false, - target: 'esnext' + target: 'esnext', + commonjsOptions: { + // pnpm only symlinks packages, and vite wont process cjs deps not in + // node_modules, so we add the cjs dep here + include: [/node_modules/, /cjs-only/] + } }, server: { watch: { diff --git a/packages/e2e-tests/package-json-svelte-field/__tests__/package-json-svelte-field.spec.ts b/packages/e2e-tests/package-json-svelte-field/__tests__/package-json-svelte-field.spec.ts index 0b3942664..657158e88 100644 --- a/packages/e2e-tests/package-json-svelte-field/__tests__/package-json-svelte-field.spec.ts +++ b/packages/e2e-tests/package-json-svelte-field/__tests__/package-json-svelte-field.spec.ts @@ -1,5 +1,22 @@ -import { getText } from '../../testUtils'; +import fs from 'fs'; +import path from 'path'; +import { getText, isBuild } from '../../testUtils'; test('should render component imported via svelte field in package.json', async () => { expect(await getText('#test-id')).toBe('svelte field works'); }); + +if (!isBuild) { + test('should optimize nested deps of excluded svelte deps', () => { + const vitePrebundleMetadata = path.resolve(__dirname, '../node_modules/.vite/_metadata.json'); + const metadataFile = fs.readFileSync(vitePrebundleMetadata, 'utf8'); + const metadata = JSON.parse(metadataFile); + const optimizedPaths = Object.keys(metadata.optimized); + expect(optimizedPaths).not.toContain('e2e-test-dep-svelte-nested'); + expect(optimizedPaths).not.toContain('e2e-test-dep-svelte-simple'); + expect(optimizedPaths).toContain('e2e-test-dep-svelte-nested > e2e-test-dep-cjs-and-esm'); + expect(optimizedPaths).toContain( + 'e2e-test-dep-svelte-nested > e2e-test-dep-svelte-simple > e2e-test-dep-cjs-only' + ); + }); +} diff --git a/packages/e2e-tests/package-json-svelte-field/package.json b/packages/e2e-tests/package-json-svelte-field/package.json index 603b07750..643b8de57 100644 --- a/packages/e2e-tests/package-json-svelte-field/package.json +++ b/packages/e2e-tests/package-json-svelte-field/package.json @@ -8,11 +8,11 @@ "preview": "vite preview" }, "dependencies": { - "e2e-tests-test-dependency-svelte-field": "workspace:*" + "e2e-test-dep-svelte-nested": "workspace:*" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/package-json-svelte-field/src/App.svelte b/packages/e2e-tests/package-json-svelte-field/src/App.svelte index 1ea271e98..f3c1b508f 100644 --- a/packages/e2e-tests/package-json-svelte-field/src/App.svelte +++ b/packages/e2e-tests/package-json-svelte-field/src/App.svelte @@ -1,6 +1,5 @@ <script> - // eslint-disable-next-line node/no-missing-import - import { Message } from 'e2e-tests-test-dependency-svelte-field'; + import { Message } from 'e2e-test-dep-svelte-nested'; </script> <Message id="test-id" message="svelte field works" /> diff --git a/packages/e2e-tests/svelte-preprocess/package.json b/packages/e2e-tests/svelte-preprocess/package.json index 4fb5aa46a..f787f1e31 100644 --- a/packages/e2e-tests/svelte-preprocess/package.json +++ b/packages/e2e-tests/svelte-preprocess/package.json @@ -12,6 +12,6 @@ "svelte": "^3.42.4", "svelte-preprocess": "^4.8.0", "typescript": "^4.4.2", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/test-dependency-svelte-field/package.json b/packages/e2e-tests/test-dependency-svelte-field/package.json deleted file mode 100644 index 148cb1d67..000000000 --- a/packages/e2e-tests/test-dependency-svelte-field/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "version": "1.0.0", - "private": true, - "name": "e2e-tests-test-dependency-svelte-field", - "svelte": "src/components/svelte.js", - "files": [ - "src", - "package.json" - ], - "exports": { - "./package.json": "./package.json" - }, - "dependencies": { - "e2e-tests-hmr-test-dependency": "workspace:*" - } -} diff --git a/packages/e2e-tests/test-dependency-svelte-field/src/components/Message.svelte b/packages/e2e-tests/test-dependency-svelte-field/src/components/Message.svelte deleted file mode 100644 index 097c838a2..000000000 --- a/packages/e2e-tests/test-dependency-svelte-field/src/components/Message.svelte +++ /dev/null @@ -1,6 +0,0 @@ -<script> - export let id = 'id'; - export let message = ''; -</script> - -<div {id}>{message}</div> diff --git a/packages/e2e-tests/test-dependency-svelte-field/src/components/svelte.js b/packages/e2e-tests/test-dependency-svelte-field/src/components/svelte.js deleted file mode 100644 index 47e264fa2..000000000 --- a/packages/e2e-tests/test-dependency-svelte-field/src/components/svelte.js +++ /dev/null @@ -1,2 +0,0 @@ -import Message from './Message.svelte'; -export { Message }; diff --git a/packages/e2e-tests/ts-type-import/package.json b/packages/e2e-tests/ts-type-import/package.json index e9f6884cd..1837cd110 100644 --- a/packages/e2e-tests/ts-type-import/package.json +++ b/packages/e2e-tests/ts-type-import/package.json @@ -12,6 +12,6 @@ "@tsconfig/svelte": "^2.0.1", "@types/node": "^16.7.8", "svelte-preprocess": "^4.8.0", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/e2e-tests/vite-ssr/package.json b/packages/e2e-tests/vite-ssr/package.json index 7dac0fc62..fa433207f 100644 --- a/packages/e2e-tests/vite-ssr/package.json +++ b/packages/e2e-tests/vite-ssr/package.json @@ -17,6 +17,6 @@ "express": "^4.17.1", "serve-static": "^1.14.1", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/playground/big/package.json b/packages/playground/big/package.json index 0ccd410d7..ab8e84aa0 100644 --- a/packages/playground/big/package.json +++ b/packages/playground/big/package.json @@ -10,6 +10,6 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:*", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/playground/optimizedeps-include/package.json b/packages/playground/optimizedeps-include/package.json index a2d47881c..6220321f6 100644 --- a/packages/playground/optimizedeps-include/package.json +++ b/packages/playground/optimizedeps-include/package.json @@ -12,6 +12,6 @@ "@sveltejs/vite-plugin-svelte": "workspace:*", "svelte": "^3.42.4", "tinro": "^0.6.6", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/playground/preprocess-with-vite/package.json b/packages/playground/preprocess-with-vite/package.json index 51479e922..7402635a9 100644 --- a/packages/playground/preprocess-with-vite/package.json +++ b/packages/playground/preprocess-with-vite/package.json @@ -12,6 +12,6 @@ "sass": "^1.38.2", "stylus": "^0.54.8", "svelte": "^3.42.4", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/playground/windicss/package.json b/packages/playground/windicss/package.json index 8f80c765e..22e237251 100644 --- a/packages/playground/windicss/package.json +++ b/packages/playground/windicss/package.json @@ -14,7 +14,7 @@ "@sveltejs/vite-plugin-svelte": "workspace:*", "diff-match-patch": "^1.0.5", "svelte": "^3.42.4", - "vite": "^2.5.2", + "vite": "^2.5.3", "vite-plugin-windicss": "^1.3.0" } } diff --git a/packages/vite-plugin-svelte/package.json b/packages/vite-plugin-svelte/package.json index d4ef462f3..7faf0b64e 100644 --- a/packages/vite-plugin-svelte/package.json +++ b/packages/vite-plugin-svelte/package.json @@ -55,7 +55,7 @@ "peerDependencies": { "diff-match-patch": "^1.0.5", "svelte": "^3.34.0", - "vite": "^2.3.7" + "vite": "^2.5.3" }, "peerDependenciesMeta": { "diff-match-patch": { @@ -70,6 +70,6 @@ "rollup": "^2.56.3", "svelte": "^3.42.4", "tsup": "^4.14.0", - "vite": "^2.5.2" + "vite": "^2.5.3" } } diff --git a/packages/vite-plugin-svelte/src/utils/__tests__/dependencies.spec.ts b/packages/vite-plugin-svelte/src/utils/__tests__/dependencies.spec.ts index d028186b4..f572b3123 100644 --- a/packages/vite-plugin-svelte/src/utils/__tests__/dependencies.spec.ts +++ b/packages/vite-plugin-svelte/src/utils/__tests__/dependencies.spec.ts @@ -6,7 +6,7 @@ describe('dependencies', () => { it('should find svelte dependencies in packages/e2e-test/hmr', async () => { const deps = findRootSvelteDependencies(path.resolve('packages/e2e-tests/hmr')); expect(deps).toHaveLength(1); - expect(deps[0].name).toBe('e2e-tests-hmr-test-dependency'); + expect(deps[0].name).toBe('e2e-test-dep-svelte-simple'); expect(deps[0].path).toEqual([]); }); it('should find nested svelte dependencies in packages/e2e-test/package-json-svelte-field', async () => { @@ -14,9 +14,9 @@ describe('dependencies', () => { path.resolve('packages/e2e-tests/package-json-svelte-field') ); expect(deps).toHaveLength(2); - expect(deps[0].name).toBe('e2e-tests-test-dependency-svelte-field'); - expect(deps[1].name).toBe('e2e-tests-hmr-test-dependency'); - expect(deps[1].path).toEqual(['e2e-tests-test-dependency-svelte-field']); + expect(deps[0].name).toBe('e2e-test-dep-svelte-nested'); + expect(deps[1].name).toBe('e2e-test-dep-svelte-simple'); + expect(deps[1].path).toEqual(['e2e-test-dep-svelte-nested']); }); }); }); diff --git a/packages/vite-plugin-svelte/src/utils/options.ts b/packages/vite-plugin-svelte/src/utils/options.ts index 7ef50b203..8f43e6a03 100644 --- a/packages/vite-plugin-svelte/src/utils/options.ts +++ b/packages/vite-plugin-svelte/src/utils/options.ts @@ -236,20 +236,19 @@ function buildOptimizeDepsForSvelte( log.debug(`automatically excluding found svelte dependencies: ${svelteDepsToExclude.join(', ')}`); exclude.push(...svelteDepsToExclude.filter((x) => !optimizeDeps?.exclude?.includes(x))); - /* // TODO enable once https://github.com/vitejs/vite/pull/4634 lands const transitiveDepsToInclude = svelteDeps .filter((dep) => svelteDepsToExclude.includes(dep.name)) .flatMap((dep) => Object.keys(dep.pkg.dependencies || {}) .filter((depOfDep) => !svelteDepsToExclude.includes(depOfDep)) - .map((depOfDep) => dep.path.concat(depOfDep).join('>')) + .map((depOfDep) => dep.path.concat(dep.name, depOfDep).join(' > ')) ); log.debug( `reincluding transitive dependencies of excluded svelte dependencies`, transitiveDepsToInclude ); include.push(...transitiveDepsToInclude); -*/ + return { include, exclude }; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20a21f135..5b701f427 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,7 +50,7 @@ importers: svelte: ^3.42.4 ts-jest: ^27.0.5 typescript: ^4.4.2 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@changesets/cli': 2.16.0 '@changesets/get-github-info': 0.5.0 @@ -94,7 +94,7 @@ importers: svelte: 3.42.4 ts-jest: 27.0.5_d6279bcaf6e2c6aa91a58343d133ee67 typescript: 4.4.2 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests: specifiers: @@ -104,18 +104,41 @@ importers: css-color-names: 1.0.1 tree-kill: 1.2.2 + packages/e2e-tests/_test_dependencies/cjs-and-esm: + specifiers: {} + + packages/e2e-tests/_test_dependencies/cjs-only: + specifiers: {} + + packages/e2e-tests/_test_dependencies/esm-only: + specifiers: {} + + packages/e2e-tests/_test_dependencies/svelte-nested: + specifiers: + e2e-test-dep-cjs-and-esm: workspace:* + e2e-test-dep-svelte-simple: workspace:* + dependencies: + e2e-test-dep-cjs-and-esm: link:../cjs-and-esm + e2e-test-dep-svelte-simple: link:../svelte-simple + + packages/e2e-tests/_test_dependencies/svelte-simple: + specifiers: + e2e-test-dep-cjs-only: workspace:* + dependencies: + e2e-test-dep-cjs-only: link:../cjs-only + packages/e2e-tests/autoprefixer-browerslist: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* autoprefixer: ^10.3.3 - e2e-tests-hmr-test-dependency: workspace:* + e2e-test-dep-svelte-simple: workspace:* postcss: ^8.3.6 postcss-load-config: ^3.1.0 svelte: ^3.42.4 svelte-preprocess: ^4.8.0 - vite: ^2.5.2 + vite: ^2.5.3 dependencies: - e2e-tests-hmr-test-dependency: link:../hmr-test-dependency + e2e-test-dep-svelte-simple: link:../_test_dependencies/svelte-simple devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte autoprefixer: 10.3.3_postcss@8.3.6 @@ -123,63 +146,60 @@ importers: postcss-load-config: 3.1.0 svelte: 3.42.4 svelte-preprocess: 4.8.0_2a1072f850182c32279df48c7d9c0088 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests/configfile-custom: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* - e2e-tests-hmr-test-dependency: workspace:* + e2e-test-dep-svelte-simple: workspace:* svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 dependencies: - e2e-tests-hmr-test-dependency: link:../hmr-test-dependency + e2e-test-dep-svelte-simple: link:../_test_dependencies/svelte-simple devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests/configfile-esm: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* - e2e-tests-hmr-test-dependency: workspace:* + e2e-test-dep-svelte-simple: workspace:* svelte: ^3.42.4 svelte-preprocess: ^4.8.0 - vite: ^2.5.2 + vite: ^2.5.3 dependencies: - e2e-tests-hmr-test-dependency: link:../hmr-test-dependency + e2e-test-dep-svelte-simple: link:../_test_dependencies/svelte-simple devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 svelte-preprocess: 4.8.0_svelte@3.42.4+typescript@4.4.2 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests/custom-extensions: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests/hmr: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* - e2e-tests-hmr-test-dependency: workspace:* + e2e-test-dep-svelte-simple: workspace:* node-fetch: ^2.6.1 svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 dependencies: - e2e-tests-hmr-test-dependency: link:../hmr-test-dependency + e2e-test-dep-svelte-simple: link:../_test_dependencies/svelte-simple devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte node-fetch: 2.6.1 svelte: 3.42.4 - vite: 2.5.2 - - packages/e2e-tests/hmr-test-dependency: - specifiers: {} + vite: 2.5.3 packages/e2e-tests/kit-node: specifiers: @@ -194,15 +214,15 @@ importers: packages/e2e-tests/package-json-svelte-field: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* - e2e-tests-test-dependency-svelte-field: workspace:* + e2e-test-dep-svelte-nested: workspace:* svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 dependencies: - e2e-tests-test-dependency-svelte-field: link:../test-dependency-svelte-field + e2e-test-dep-svelte-nested: link:../_test_dependencies/svelte-nested devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests/svelte-preprocess: specifiers: @@ -210,19 +230,13 @@ importers: svelte: ^3.42.4 svelte-preprocess: ^4.8.0 typescript: ^4.4.2 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 svelte-preprocess: 4.8.0_svelte@3.42.4+typescript@4.4.2 typescript: 4.4.2 - vite: 2.5.2 - - packages/e2e-tests/test-dependency-svelte-field: - specifiers: - e2e-tests-hmr-test-dependency: workspace:* - dependencies: - e2e-tests-hmr-test-dependency: link:../hmr-test-dependency + vite: 2.5.3 packages/e2e-tests/ts-type-import: specifiers: @@ -230,13 +244,13 @@ importers: '@tsconfig/svelte': ^2.0.1 '@types/node': ^16.7.8 svelte-preprocess: ^4.8.0 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte '@tsconfig/svelte': 2.0.1 '@types/node': 16.7.8 svelte-preprocess: 4.8.0_svelte@3.42.4+typescript@4.4.2 - vite: 2.5.2 + vite: 2.5.3 packages/e2e-tests/vite-ssr: specifiers: @@ -246,7 +260,7 @@ importers: express: ^4.17.1 serve-static: ^1.14.1 svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte compression: 1.7.4 @@ -254,7 +268,7 @@ importers: express: 4.17.1 serve-static: 1.14.1 svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 packages/playground: specifiers: {} @@ -263,11 +277,11 @@ importers: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 packages/playground/kit-demo-app: specifiers: @@ -291,12 +305,12 @@ importers: '@sveltejs/vite-plugin-svelte': workspace:* svelte: ^3.42.4 tinro: ^0.6.6 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte svelte: 3.42.4 tinro: 0.6.6 - vite: 2.5.2 + vite: 2.5.3 packages/playground/preprocess-with-vite: specifiers: @@ -304,20 +318,20 @@ importers: sass: ^1.38.2 stylus: ^0.54.8 svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 devDependencies: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte sass: 1.38.2 stylus: 0.54.8 svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 packages/playground/windicss: specifiers: '@sveltejs/vite-plugin-svelte': workspace:* diff-match-patch: ^1.0.5 svelte: ^3.42.4 - vite: ^2.5.2 + vite: ^2.5.3 vite-plugin-windicss: ^1.3.0 windicss: ^3.1.7 dependencies: @@ -326,8 +340,8 @@ importers: '@sveltejs/vite-plugin-svelte': link:../../vite-plugin-svelte diff-match-patch: 1.0.5 svelte: 3.42.4 - vite: 2.5.2 - vite-plugin-windicss: 1.3.0_typescript@4.4.2+vite@2.5.2 + vite: 2.5.3 + vite-plugin-windicss: 1.3.0_typescript@4.4.2+vite@2.5.3 packages/vite-plugin-svelte: specifiers: @@ -344,7 +358,7 @@ importers: svelte: ^3.42.4 svelte-hmr: ^0.14.7 tsup: ^4.14.0 - vite: ^2.5.2 + vite: ^2.5.3 dependencies: '@rollup/pluginutils': 4.1.1 debug: 4.3.2 @@ -360,7 +374,7 @@ importers: rollup: 2.56.3 svelte: 3.42.4 tsup: 4.14.0_typescript@4.4.2 - vite: 2.5.2 + vite: 2.5.3 packages: @@ -1303,7 +1317,7 @@ packages: cheap-watch: 1.0.3 sade: 1.7.4 svelte: 3.42.4 - vite: 2.5.2 + vite: 2.5.3 dev: true /@szmarczak/http-timer/1.1.2: @@ -7592,15 +7606,15 @@ packages: extsprintf: 1.3.0 dev: true - /vite-plugin-windicss/1.3.0_typescript@4.4.2+vite@2.5.2: + /vite-plugin-windicss/1.3.0_typescript@4.4.2+vite@2.5.3: resolution: {integrity: sha512-Xd9VxXX8z9bsdKs3iL6qXJDXsDDl/HQSWqJOLZFkkp23b3goGRnlT4Rlo5WeIAfrEV944r8bF7wfpDXCkk8XCg==} peerDependencies: - vite: ^2.5.0 + vite: ^2.5.3 dependencies: '@windicss/plugin-utils': 1.3.0_typescript@4.4.2 chalk: 4.1.2 debug: 4.3.2 - vite: 2.5.2 + vite: 2.5.3 windicss: 3.1.7 transitivePeerDependencies: - supports-color @@ -7608,8 +7622,8 @@ packages: - typescript dev: true - /vite/2.5.2: - resolution: {integrity: sha512-JK5uhiVyMqHiAJbgBa8rCvpP8bEhAE9dKDv1gCmP+EUP2FSPmEeW3WXlCXauPB3MDa8behPW+ntyNXqnGaxslg==} + /vite/2.5.3: + resolution: {integrity: sha512-1wMDnjflvtTTkMov8O/Xb5+w1/VW/Gw8oCf8f6dqgHn8lMOEqq0SaPtFEQeikFcOKCfSbiU0nEi0LDIx6DNsaQ==} engines: {node: '>=12.2.0'} hasBin: true dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e9304922b..a378f8cb5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: - 'packages/*' - 'packages/e2e-tests/*' + - 'packages/e2e-tests/_test_dependencies/*' - 'packages/playground/*'