diff --git a/.changeset/heavy-dots-repeat.md b/.changeset/heavy-dots-repeat.md new file mode 100644 index 000000000..3e00ea8c2 --- /dev/null +++ b/.changeset/heavy-dots-repeat.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/vite-plugin-svelte': major +--- + +Using the typescript preprocessor now requires a tsconfig.json with verbatimModuleSyntax enabled, eg @tsconfig/svelte diff --git a/.changeset/huge-lamps-greet.md b/.changeset/huge-lamps-greet.md new file mode 100644 index 000000000..ec12d1271 --- /dev/null +++ b/.changeset/huge-lamps-greet.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/vite-plugin-svelte': minor +--- + +Add experimental support for rolldown-vite diff --git a/.changeset/hungry-phones-prove.md b/.changeset/hungry-phones-prove.md new file mode 100644 index 000000000..0ac2565c7 --- /dev/null +++ b/.changeset/hungry-phones-prove.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/vite-plugin-svelte': minor +--- + +replace esbuild optimizer with rolldown optimizer if rolldown-vite is used diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ebfa4b3ae..6e2e568c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,7 +87,11 @@ jobs: # baseline test lowest vite and node version - node: 20.19 os: ubuntu-latest - vite: '6.3.0' + vite: 'baseline' + # future test with rolldown-vite + - node: 24 + os: ubuntu-latest + vite: 'rolldown-vite' steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -106,9 +110,16 @@ jobs: cache-dependency-path: '**/pnpm-lock.yaml' - name: install run: pnpm install --frozen-lockfile --ignore-scripts - - name: update vite version - if: matrix.vite != 'current' - run: pnpm update -r --no-save vite@${{matrix.vite}} + - name: downgrade vite to baseline + if: matrix.vite == 'baseline' + run: | + pnpm update -r --no-save vite@6.3.0 + pnpm ls vite + - name: update vite to rolldown-vite + if: matrix.vite == 'rolldown-vite' + run: | + pnpm update -r --no-save vite@npm:rolldown-vite@latest + pnpm ls rolldown-vite - name: install playwright chromium run: pnpm playwright install chromium - name: run tests diff --git a/eslint.config.js b/eslint.config.js index 63b4ac074..f5b840710 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,7 +14,8 @@ export default [ 'packages/playground/big/src/pages/**', // lots of generated files 'packages/*/types/index.d.ts', 'packages/*/types/index.d.ts.map', - 'packages/*/CHANGELOG.md' + 'packages/*/CHANGELOG.md', + 'packages/e2e-tests/**/logs/**' ] }, ...svelteOrgEslintConfig, // contains setup for svelte and typescript diff --git a/packages/e2e-tests/_test_dependencies/vite-plugins/index.js b/packages/e2e-tests/_test_dependencies/vite-plugins/index.js index 057b8d260..12e635d67 100644 --- a/packages/e2e-tests/_test_dependencies/vite-plugins/index.js +++ b/packages/e2e-tests/_test_dependencies/vite-plugins/index.js @@ -63,7 +63,7 @@ export function writeResolvedConfig() { }; const dir = path.join(config.root, 'logs', 'resolved-configs'); if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); + fs.mkdirSync(dir, { recursive: true }); } const filename = path.join(dir, `vite.config.${cmd}${config.build.ssr ? '.ssr' : ''}.json`); fs.writeFileSync(filename, JSON.stringify(serializableConfig, replacer, '\t'), 'utf-8'); diff --git a/packages/e2e-tests/kit-node/.gitignore b/packages/e2e-tests/kit-node/.gitignore index 2cf8b799d..d1818771d 100644 --- a/packages/e2e-tests/kit-node/.gitignore +++ b/packages/e2e-tests/kit-node/.gitignore @@ -6,3 +6,4 @@ node_modules #.env .env.* !.env.example +logs diff --git a/packages/e2e-tests/prebundle-svelte-deps/svelte.config.js b/packages/e2e-tests/prebundle-svelte-deps/svelte.config.js index 34e58b624..244d0fc1b 100644 --- a/packages/e2e-tests/prebundle-svelte-deps/svelte.config.js +++ b/packages/e2e-tests/prebundle-svelte-deps/svelte.config.js @@ -1,6 +1,6 @@ -import preprocess from 'svelte-preprocess'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; export default { - preprocess: [preprocess()], + preprocess: [vitePreprocess()], vitePlugin: { prebundleSvelteLibraries: true } diff --git a/packages/e2e-tests/preprocess-with-vite/__tests__/preprocess-with-vite.spec.ts b/packages/e2e-tests/preprocess-with-vite/__tests__/preprocess-with-vite.spec.ts index 948caf8ee..b6bc00da4 100644 --- a/packages/e2e-tests/preprocess-with-vite/__tests__/preprocess-with-vite.spec.ts +++ b/packages/e2e-tests/preprocess-with-vite/__tests__/preprocess-with-vite.spec.ts @@ -7,6 +7,7 @@ test('should render App', async () => { expect(await getText('#foo-title')).toBe('Styles with stylus blub'); expect(await getColor('#foo-title')).toBe('magenta'); expect(await getColor('p.note')).toBe('rgb(255, 62, 0)'); + expect(await getText('#enum')).toBe('qoox'); }); test('should not mangle code from esbuild pure annotations', async () => { diff --git a/packages/e2e-tests/preprocess-with-vite/package.json b/packages/e2e-tests/preprocess-with-vite/package.json index ca9f027e5..c86173316 100644 --- a/packages/e2e-tests/preprocess-with-vite/package.json +++ b/packages/e2e-tests/preprocess-with-vite/package.json @@ -9,6 +9,7 @@ }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "workspace:^", + "@tsconfig/svelte": "^5.0.4", "sass": "^1.89.1", "stylus": "^0.64.0", "svelte": "^5.33.18", diff --git a/packages/e2e-tests/preprocess-with-vite/src/App.svelte b/packages/e2e-tests/preprocess-with-vite/src/App.svelte index 998cea291..44a388abc 100644 --- a/packages/e2e-tests/preprocess-with-vite/src/App.svelte +++ b/packages/e2e-tests/preprocess-with-vite/src/App.svelte @@ -3,12 +3,17 @@ import Bar from './Bar.svelte'; export let hello: string; const world: string = 'world'; // edit world and save to see hmr update + enum Baz { + Qoox = 'qoox' + } + let qoox = Baz.Qoox;
This is styled with scss using darken fn
{qoox}