Skip to content

Commit 925c3b2

Browse files
dominikgbluwybenmccann
authored
feat: Vite 3 support (#359)
* wip: switch to vite3 alpha, fix type changes, generate optimize config on build * wip: update to alpha.9, fix tests, ensure all svelte/ deps are ssr.noExternal * chore: add changeset * update to vite 3.0.0-alpha.10 after rebase * chore: update vite to alpha.11 * chore: update vite beta * fix: handle localhost change * chore: upgrade to beta.1 * fix: handle breaking changes * chore: update beta 2 * upgrade to vite 3.0.0-beta.5 (#381) * chore: add missing test dep * chore: revert ssr handling * chore: remove ts-expect-error * upgrade to 3.0.0-beta.9 (#387) * upgrade to 3.0.0-beta.9 * update root package.json * chore: update beta.10 * fix: update generated ssr.noExternal config to always include all svelte dependencies to avoid failed svelte deduplication during dev with vite-3 * chore: add changeset to raise visibility for recent vite3 related change * chore: align min node version with vite 3 * chore: update dependency to vite 3.0.0 final Co-authored-by: bluwy <[email protected]> Co-authored-by: Ben McCann <[email protected]>
1 parent d988338 commit 925c3b2

File tree

32 files changed

+274
-360
lines changed

32 files changed

+274
-360
lines changed

.changeset/five-moles-swim.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': patch
3+
---
4+
5+
Always add dependencies using svelte to ssr.noExternal in vite config

.changeset/metal-jeans-jam.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': major
3+
---
4+
5+
update to vite3

.changeset/nervous-bottles-lay.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': major
3+
---
4+
5+
bump minimum required node version to 14.18.0 to align with vite 3

package.json

+6-4
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"rimraf": "^3.0.2",
4747
"svelte": "^3.49.0",
4848
"typescript": "^4.7.4",
49-
"vite": "^2.9.14",
49+
"vite": "^3.0.0",
5050
"vitest": "^0.18.0"
5151
},
5252
"lint-staged": {
@@ -60,16 +60,18 @@
6060
"pnpm": "^7.5.1",
6161
"yarn": "forbidden, use pnpm",
6262
"npm": "forbidden, use pnpm",
63-
"node": "^14.13.1 || >= 16"
63+
"node": "^14.18.0 || >= 16"
6464
},
6565
"pnpm": {
6666
"overrides": {
67-
"@sveltejs/vite-plugin-svelte": "workspace:*"
67+
"@sveltejs/vite-plugin-svelte": "workspace:*",
68+
"vite": "^3.0.0"
6869
},
6970
"peerDependencyRules": {
7071
"allowedVersions": {
7172
"stylus": "^0.58.0",
72-
"postcss-load-config": "^4.0.0"
73+
"postcss-load-config": "^4.0.0",
74+
"vite": "^3.0.0"
7375
}
7476
}
7577
}

packages/e2e-tests/_test_dependencies/svelte-api-only/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,8 @@
1414
},
1515
"./package.json": "./package.json"
1616
},
17-
"type": "module"
17+
"type": "module",
18+
"dependencies": {
19+
"svelte": "^3.48.0"
20+
}
1821
}

packages/e2e-tests/autoprefixer-browerslist/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"postcss-load-config": "^4.0.1",
1818
"svelte": "^3.49.0",
1919
"svelte-preprocess": "^4.10.7",
20-
"vite": "^2.9.14"
20+
"vite": "^3.0.0"
2121
},
2222
"type": "module"
2323
}

packages/e2e-tests/configfile-custom/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"devDependencies": {
1414
"@sveltejs/vite-plugin-svelte": "workspace:*",
1515
"svelte": "^3.49.0",
16-
"vite": "^2.9.14"
16+
"vite": "^3.0.0"
1717
},
1818
"type": "module"
1919
}

packages/e2e-tests/configfile-esm/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@sveltejs/vite-plugin-svelte": "workspace:*",
1515
"svelte": "^3.49.0",
1616
"svelte-preprocess": "^4.10.7",
17-
"vite": "^2.9.14"
17+
"vite": "^3.0.0"
1818
},
1919
"type": "module"
2020
}

packages/e2e-tests/custom-extensions/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
},
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
12-
"svelte": "^3.49.0",
13-
"vite": "^2.9.14"
12+
"svelte": "^3.9.0",
13+
"vite": "^3.0.0"
1414
},
1515
"type": "module"
1616
}

packages/e2e-tests/e2e-server.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ async function startedOnPort(serverProcess, port, timeout) {
1818
stdoutListener = (data) => {
1919
const str = data.toString();
2020
// hack, console output may contain color code gibberish
21-
// skip gibberish between localhost: and port number
22-
const match = str.match(/(http:\/\/localhost:)(?:.*)(\d{4})/);
21+
// skip gibberish between localhost: and port number.
22+
// Vite may print other host then `localhost` for machines
23+
// with different DNS resove order, as Node <17 does not
24+
// respect the order by default.
25+
const match = str.match(/(http:\/\/(?:localhost|127.0.0.1|\[::1\]):)(?:.*)(\d{4})/);
2326
if (match) {
2427
const startedPort = parseInt(match[2], 10);
2528
if (startedPort === port) {

packages/e2e-tests/env/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
1212
"svelte": "^3.49.0",
13-
"vite": "^2.9.14"
13+
"vite": "^3.0.0"
1414
},
1515
"type": "module"
1616
}

packages/e2e-tests/hmr/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"e2e-test-dep-vite-plugins": "workspace:*",
1616
"node-fetch": "^3.2.4",
1717
"svelte": "^3.49.0",
18-
"vite": "^2.9.14"
18+
"vite": "^3.0.0"
1919
},
2020
"type": "module"
2121
}

packages/e2e-tests/inspector-vite/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
"devDependencies": {
1212
"@sveltejs/vite-plugin-svelte": "workspace:*",
1313
"svelte": "^3.49.0",
14-
"vite": "^2.9.14"
14+
"vite": "^3.0.0"
1515
}
1616
}

packages/e2e-tests/kit-node/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
"devDependencies": {
1515
"@sveltejs/adapter-node": "^1.0.0-next.79",
1616
"@sveltejs/kit": "^1.0.0-next.370",
17-
"e2e-test-dep-svelte-api-only": "workspace:*",
18-
"e2e-test-dep-vite-plugins": "workspace:*",
17+
"e2e-test-dep-svelte-api-only": "file:../_test_dependencies/svelte-api-only",
18+
"e2e-test-dep-vite-plugins": "file:../_test_dependencies/vite-plugins",
1919
"svelte": "^3.49.0",
2020
"svelte-check": "^2.8.0",
2121
"svelte-i18n": "^3.4.0",

packages/e2e-tests/package-json-svelte-field/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"devDependencies": {
1515
"@sveltejs/vite-plugin-svelte": "workspace:*",
1616
"svelte": "^3.49.0",
17-
"vite": "^2.9.14"
17+
"vite": "^3.0.0"
1818
},
1919
"type": "module"
2020
}

packages/e2e-tests/preprocess-with-vite/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"sass": "^1.53.0",
1313
"stylus": "^0.58.1",
1414
"svelte": "^3.49.0",
15-
"vite": "^2.9.14"
15+
"vite": "^3.0.0"
1616
},
1717
"type": "commonjs"
1818
}

packages/e2e-tests/svelte-preprocess/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
},
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
12+
"sass": "^1.52.3",
1213
"svelte": "^3.49.0",
1314
"svelte-preprocess": "^4.10.7",
1415
"typescript": "^4.7.4",
15-
"vite": "^2.9.14"
16+
"vite": "^3.0.0"
1617
},
1718
"type": "module"
1819
}

packages/e2e-tests/testUtils.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,8 @@ export async function waitForNavigation(opts: Parameters<typeof page.waitForNavi
219219
});
220220
}
221221

222-
export async function fetchPageText(forceIpv4 = false) {
223-
// force ip v4 in dev as Vite also forces it.
224-
// this will be fixed in Vite 3 when we can removed this trick.
225-
const url = page.url().replace('localhost', forceIpv4 ? '127.0.0.1' : 'localhost');
222+
export async function fetchPageText() {
223+
const url = page.url();
226224
const res = await fetch(url);
227225
if (res.ok) {
228226
return res.text();

packages/e2e-tests/ts-type-import/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"@types/node": "^17.0.36",
1414
"svelte": "^3.49.0",
1515
"svelte-preprocess": "^4.10.7",
16-
"vite": "^2.9.14"
16+
"vite": "^3.0.0"
1717
},
1818
"type": "module"
1919
}

packages/e2e-tests/vite-ssr-esm/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"express": "^4.18.1",
2121
"npm-run-all": "^4.1.5",
2222
"serve-static": "^1.15.0",
23-
"svelte": "^3.49.0",
24-
"vite": "^2.9.14"
23+
"svelte": "^3.9.0",
24+
"vite": "^3.0.0"
2525
}
2626
}

packages/e2e-tests/vite-ssr-esm/server.js

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ async function createServer(root = process.cwd(), isProd = process.env.NODE_ENV
3333
if (!isProd) {
3434
const inlineCfg = {
3535
root,
36+
appType: 'custom',
3637
server: {
3738
middlewareMode: true,
3839
port

packages/e2e-tests/vite-ssr/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@
1818
"express": "^4.18.1",
1919
"serve-static": "^1.15.0",
2020
"svelte": "^3.49.0",
21-
"vite": "^2.9.14"
21+
"vite": "^3.0.0"
2222
}
2323
}

packages/e2e-tests/vite-ssr/server.js

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ async function createServer(root = process.cwd(), isProd = process.env.NODE_ENV
3030
if (!isProd) {
3131
const inlineCfg = {
3232
root,
33+
appType: 'custom',
3334
server: {
3435
middlewareMode: true,
3536
port
@@ -71,6 +72,7 @@ async function createServer(root = process.cwd(), isProd = process.env.NODE_ENV
7172
const html = template
7273
.replace(`<!--head-outlet-->`, headElements)
7374
.replace(`<!--app-outlet-->`, appHtml);
75+
console.log(html);
7476

7577
res.status(200).set({ 'Content-Type': 'text/html' }).end(html);
7678
} catch (e) {

packages/e2e-tests/vite-ssr/vite.config.js

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ module.exports = defineConfig(({ command, mode }) => {
1010
}
1111
})
1212
],
13+
ssr: {
14+
format: 'cjs'
15+
},
1316
build: {
1417
target: 'esnext',
1518
minify: false,

packages/playground/big-component-library/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@sveltejs/vite-plugin-svelte": "workspace:*",
1313
"carbon-components-svelte": "^0.67.0",
1414
"svelte": "^3.49.0",
15-
"vite": "^2.9.14"
15+
"vite": "^3.0.0"
1616
},
1717
"dependencies": {
1818
"lodash-es": "^4.17.21"

packages/playground/big/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:*",
1212
"svelte": "^3.49.0",
13-
"vite": "^2.9.14"
13+
"vite": "^3.0.0"
1414
}
1515
}

packages/playground/optimizedeps-include/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212
"@sveltejs/vite-plugin-svelte": "workspace:*",
1313
"svelte": "^3.49.0",
1414
"tinro": "^0.6.12",
15-
"vite": "^2.9.14"
15+
"vite": "^3.0.0"
1616
}
1717
}

packages/playground/windicss/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"@sveltejs/vite-plugin-svelte": "workspace:*",
1515
"diff-match-patch": "^1.0.5",
1616
"svelte": "^3.49.0",
17-
"vite": "^2.9.14",
17+
"vite": "^3.0.0",
1818
"vite-plugin-windicss": "^1.8.6"
1919
}
2020
}

packages/vite-plugin-svelte/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"build": "pnpm build:ci --dts --sourcemap"
2929
},
3030
"engines": {
31-
"node": "^14.13.1 || >= 16"
31+
"node": "^14.18.0 || >= 16"
3232
},
3333
"repository": {
3434
"type": "git",
@@ -56,7 +56,7 @@
5656
"peerDependencies": {
5757
"diff-match-patch": "^1.0.5",
5858
"svelte": "^3.44.0",
59-
"vite": "^2.9.0"
59+
"vite": "^3.0.0"
6060
},
6161
"peerDependenciesMeta": {
6262
"diff-match-patch": {
@@ -72,6 +72,6 @@
7272
"rollup": "^2.76.0",
7373
"svelte": "^3.49.0",
7474
"tsup": "^6.1.3",
75-
"vite": "^2.9.14"
75+
"vite": "^3.0.0"
7676
}
7777
}

packages/vite-plugin-svelte/src/index.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
9090
if (isSvelteMetadataChanged) {
9191
// Force Vite to optimize again. Although we mutate the config here, it works because
9292
// Vite's optimizer runs after `buildStart()`.
93-
viteConfig.server.force = true;
93+
// TODO: verify this works in vite3
94+
viteConfig.optimizeDeps.force = true;
9495
}
9596
},
9697

@@ -101,9 +102,7 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
101102
},
102103

103104
load(id, opts) {
104-
// @ts-expect-error anticipate vite changing second parameter as options object
105-
// see https://github.com/vitejs/vite/discussions/5109
106-
const ssr: boolean = opts === true || opts?.ssr;
105+
const ssr = !!opts?.ssr;
107106
const svelteRequest = requestParser(id, !!ssr);
108107
if (svelteRequest) {
109108
const { filename, query } = svelteRequest;

0 commit comments

Comments
 (0)