Skip to content

Commit 10ec2a4

Browse files
authored
breaking: remove support for svelte3 (#746)
* chore(node): drop support for 14 and 16 * chore(updates): remove support for svelte 3
1 parent d5b952f commit 10ec2a4

File tree

8 files changed

+12
-60
lines changed

8 files changed

+12
-60
lines changed

.changeset/grumpy-planets-crash.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte-inspector': major
3+
'@sveltejs/vite-plugin-svelte': major
4+
---
5+
6+
breaking: remove support for svelte 3

.github/workflows/ci.yml

+1-7
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,9 @@ jobs:
7575
matrix:
7676
node: [18]
7777
os: [ubuntu-latest, macos-latest, windows-latest]
78-
svelte: [4]
7978
include:
8079
- node: 20
8180
os: ubuntu-latest
82-
svelte: 4
8381
steps:
8482
- uses: actions/checkout@v4
8583
- uses: actions/setup-node@v3
@@ -91,10 +89,6 @@ jobs:
9189
PNPM_VER=$(jq -r '.packageManager | if .[0:5] == "pnpm@" then .[5:] else "packageManager in package.json does not start with pnpm@\n" | halt_error(1) end' package.json)
9290
echo installing pnpm version $PNPM_VER
9391
npm i -g pnpm@$PNPM_VER
94-
- name: use svelte 3
95-
if: matrix.svelte == 3
96-
run: |
97-
tmppkg="$(jq '.devDependencies.svelte = "^3.59.2"' package.json)" && echo -E "${tmppkg}" > package.json && tmppkg=""
9892
- uses: actions/setup-node@v3
9993
with:
10094
node-version: ${{ matrix.node }}
@@ -113,7 +107,7 @@ jobs:
113107
- uses: actions/upload-artifact@v3
114108
if: failure()
115109
with:
116-
name: test-failure-${{github.run_id}}-${{ matrix.os }}-${{ matrix.node }}-${{ matrix.svelte }}
110+
name: test-failure-${{github.run_id}}-${{ matrix.os }}-${{ matrix.node }}
117111
path: |
118112
test-temp.tar
119113
pnpm-debug.log

packages/vite-plugin-svelte-inspector/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
},
4242
"peerDependencies": {
4343
"@sveltejs/vite-plugin-svelte": "^2.2.0",
44-
"svelte": "^3.54.0 || ^4.0.0",
44+
"svelte": "^4.0.0",
4545
"vite": "^5.0.0-beta.1 || ^5.0.0"
4646
},
4747
"devDependencies": {

packages/vite-plugin-svelte/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"vitefu": "^0.2.4"
4848
},
4949
"peerDependencies": {
50-
"svelte": "^3.54.0 || ^4.0.0",
50+
"svelte": "^4.0.0",
5151
"vite": "^5.0.0-beta.1 || ^5.0.0"
5252
},
5353
"devDependencies": {

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

-25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import fs from 'node:fs';
2-
import { version as viteVersion } from 'vite';
32

43
import { svelteInspector } from '@sveltejs/vite-plugin-svelte-inspector';
54

@@ -24,9 +23,6 @@ import { saveSvelteMetadata } from './utils/optimizer.js';
2423
import { VitePluginSvelteCache } from './utils/vite-plugin-svelte-cache.js';
2524
import { loadRaw } from './utils/load-raw.js';
2625
import { FAQ_LINK_CONFLICTS_IN_SVELTE_RESOLVE } from './utils/constants.js';
27-
import { isSvelte3 } from './utils/svelte-version.js';
28-
29-
const isVite4_0 = viteVersion.startsWith('4.0');
3026

3127
/** @type {import('./index.d.ts').svelte} */
3228
export function svelte(inlineOptions) {
@@ -47,8 +43,6 @@ export function svelte(inlineOptions) {
4743
let compileSvelte;
4844
/* eslint-enable no-unused-vars */
4945

50-
/** @type {Promise<import('vite').Rollup.PartialResolvedId | null>} */
51-
let resolvedSvelteSSR;
5246
/** @type {Set<string>} */
5347
let packagesWithResolveWarnings;
5448
/** @type {import('./types/plugin-api.d.ts').PluginAPI} */
@@ -145,25 +139,6 @@ export function svelte(inlineOptions) {
145139
}
146140
}
147141

148-
// TODO: remove this after bumping peerDep on Vite to 4.1+ or Svelte to 4.0+
149-
if (isVite4_0 && isSvelte3 && ssr && importee === 'svelte') {
150-
if (!resolvedSvelteSSR) {
151-
resolvedSvelteSSR = this.resolve('svelte/ssr', undefined, { skipSelf: true }).then(
152-
(svelteSSR) => {
153-
log.debug('resolved svelte to svelte/ssr');
154-
return svelteSSR;
155-
},
156-
(err) => {
157-
log.debug(
158-
'failed to resolve svelte to svelte/ssr. Update svelte to a version that exports it',
159-
err
160-
);
161-
return null; // returning null here leads to svelte getting resolved regularly
162-
}
163-
);
164-
}
165-
return resolvedSvelteSSR;
166-
}
167142
//@ts-expect-error scan
168143
const scan = !!opts?.scan; // scanner phase of optimizeDeps
169144
const isPrebundled =

packages/vite-plugin-svelte/src/utils/compile.js

+1-15
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import { mapToRelative } from './sourcemaps.js';
99

1010
const scriptLangRE = /<script [^>]*lang=["']?([^"' >]+)["']?[^>]*>/;
1111

12-
import { isSvelte3 } from './svelte-version.js';
13-
1412
/**
1513
* @param {Function} [makeHot]
1614
* @returns {import('../types/compile.d.ts').CompileSvelte}
@@ -55,10 +53,7 @@ export const _createCompileSvelte = (makeHot) => {
5553
filename,
5654
generate: ssr ? 'ssr' : 'dom'
5755
};
58-
if (isSvelte3) {
59-
// @ts-ignore
60-
compileOptions.format = 'esm';
61-
}
56+
6257
if (options.hot && options.emitCss) {
6358
const hash = `s-${safeBase64Hash(normalizedFilename)}`;
6459
log.debug(`setting cssHash ${hash} for ${normalizedFilename}`);
@@ -125,15 +120,6 @@ export const _createCompileSvelte = (makeHot) => {
125120
const endStat = stats?.start(filename);
126121
const compiled = compile(finalCode, finalCompileOptions);
127122

128-
if (isSvelte3) {
129-
// prevent dangling pure comments
130-
// see https://github.com/sveltejs/kit/issues/9492#issuecomment-1487704985
131-
// uses regex replace with whitespace to keep sourcemap/character count unmodified
132-
compiled.js.code = compiled.js.code.replace(
133-
/\/\* [@#]__PURE__ \*\/(\s*)$/gm,
134-
' $1'
135-
);
136-
}
137123
if (endStat) {
138124
endStat();
139125
}

packages/vite-plugin-svelte/src/utils/constants.js

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { isSvelte3 } from './svelte-version.js';
2-
31
export const VITE_RESOLVE_MAIN_FIELDS = ['module', 'jsnext:main', 'jsnext'];
42

53
export const SVELTE_RESOLVE_MAIN_FIELDS = ['svelte'];
@@ -8,16 +6,13 @@ export const SVELTE_IMPORTS = [
86
'svelte/animate',
97
'svelte/easing',
108
'svelte/internal',
9+
'svelte/internal/disclose-version',
1110
'svelte/motion',
1211
'svelte/ssr',
1312
'svelte/store',
1413
'svelte/transition',
1514
'svelte'
1615
];
17-
// TODO add to global list after dropping svelte 3
18-
if (!isSvelte3) {
19-
SVELTE_IMPORTS.push('svelte/internal/disclose-version');
20-
}
2116

2217
export const SVELTE_HMR_IMPORTS = [
2318
'svelte-hmr/runtime/hot-api-esm.js',

packages/vite-plugin-svelte/src/utils/esbuild.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { readFileSync } from 'node:fs';
22
import { compile, preprocess } from 'svelte/compiler';
33
import { log } from './log.js';
44
import { toESBuildError } from './error.js';
5-
import { isSvelte3 } from './svelte-version.js';
65

76
/**
87
* @typedef {NonNullable<import('vite').DepOptimizationOptions['esbuildOptions']>} EsbuildOptions
@@ -67,10 +66,7 @@ async function compileSvelte(options, { filename, code }, statsCollection) {
6766
filename,
6867
generate: 'dom'
6968
};
70-
if (isSvelte3) {
71-
// @ts-ignore
72-
compileOptions.format = 'esm';
73-
}
69+
7470
let preprocessed;
7571

7672
if (options.preprocess) {

0 commit comments

Comments
 (0)