Skip to content

Commit 7cd6064

Browse files
dominikgdummdidumm
andauthored
feat: experimental rolldown-vite support (#1135)
* add rolldown-vite to test matrix, improve setup for kit-node test * fix: relax warning filter * fix workflow failure filename * feat: support rolldown-vite in vitePreprocess * fix: ignore rolldown-vite only things in type check * feat: add rolldown optimizer plugins instead of esbuild * fix lockfile * refactor: use factory function for 2 optimizer plugins, use options hook info to drive filter * refactor: remove code duplication in optimizer plugins and patch them by reference instead of using Object.assign * chore: add warning log and changeset for experimental support * fix: reduce warning log to single line and ignore in testcase * fix: buildStart and buildEnd hook of patched rolldown optimizer plugins still referenced isScanner * Update .changeset/heavy-dots-repeat.md Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com> --------- Co-authored-by: Simon H <5968653+dummdidumm@users.noreply.github.com>
1 parent 2aa34e2 commit 7cd6064

File tree

23 files changed

+264
-120
lines changed

23 files changed

+264
-120
lines changed

.changeset/heavy-dots-repeat.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': major
3+
---
4+
5+
Using the typescript preprocessor now requires a tsconfig.json with verbatimModuleSyntax enabled, eg @tsconfig/svelte

.changeset/huge-lamps-greet.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': minor
3+
---
4+
5+
Add experimental support for rolldown-vite

.changeset/hungry-phones-prove.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': minor
3+
---
4+
5+
replace esbuild optimizer with rolldown optimizer if rolldown-vite is used

.github/workflows/ci.yml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,11 @@ jobs:
8787
# baseline test lowest vite and node version
8888
- node: 20.19
8989
os: ubuntu-latest
90-
vite: '6.3.0'
90+
vite: 'baseline'
91+
# future test with rolldown-vite
92+
- node: 24
93+
os: ubuntu-latest
94+
vite: 'rolldown-vite'
9195
steps:
9296
- uses: actions/checkout@v4
9397
- uses: actions/setup-node@v4
@@ -106,9 +110,16 @@ jobs:
106110
cache-dependency-path: '**/pnpm-lock.yaml'
107111
- name: install
108112
run: pnpm install --frozen-lockfile --ignore-scripts
109-
- name: update vite version
110-
if: matrix.vite != 'current'
111-
run: pnpm update -r --no-save vite@${{matrix.vite}}
113+
- name: downgrade vite to baseline
114+
if: matrix.vite == 'baseline'
115+
run: |
116+
pnpm update -r --no-save vite@6.3.0
117+
pnpm ls vite
118+
- name: update vite to rolldown-vite
119+
if: matrix.vite == 'rolldown-vite'
120+
run: |
121+
pnpm update -r --no-save vite@npm:rolldown-vite@latest
122+
pnpm ls rolldown-vite
112123
- name: install playwright chromium
113124
run: pnpm playwright install chromium
114125
- name: run tests

eslint.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export default [
1414
'packages/playground/big/src/pages/**', // lots of generated files
1515
'packages/*/types/index.d.ts',
1616
'packages/*/types/index.d.ts.map',
17-
'packages/*/CHANGELOG.md'
17+
'packages/*/CHANGELOG.md',
18+
'packages/e2e-tests/**/logs/**'
1819
]
1920
},
2021
...svelteOrgEslintConfig, // contains setup for svelte and typescript

packages/e2e-tests/_test_dependencies/vite-plugins/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export function writeResolvedConfig() {
6363
};
6464
const dir = path.join(config.root, 'logs', 'resolved-configs');
6565
if (!fs.existsSync(dir)) {
66-
fs.mkdirSync(dir);
66+
fs.mkdirSync(dir, { recursive: true });
6767
}
6868
const filename = path.join(dir, `vite.config.${cmd}${config.build.ssr ? '.ssr' : ''}.json`);
6969
fs.writeFileSync(filename, JSON.stringify(serializableConfig, replacer, '\t'), 'utf-8');

packages/e2e-tests/kit-node/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ node_modules
66
#.env
77
.env.*
88
!.env.example
9+
logs

packages/e2e-tests/prebundle-svelte-deps/svelte.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import preprocess from 'svelte-preprocess';
1+
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
22
export default {
3-
preprocess: [preprocess()],
3+
preprocess: [vitePreprocess()],
44
vitePlugin: {
55
prebundleSvelteLibraries: true
66
}

packages/e2e-tests/preprocess-with-vite/__tests__/preprocess-with-vite.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ test('should render App', async () => {
77
expect(await getText('#foo-title')).toBe('Styles with stylus blub');
88
expect(await getColor('#foo-title')).toBe('magenta');
99
expect(await getColor('p.note')).toBe('rgb(255, 62, 0)');
10+
expect(await getText('#enum')).toBe('qoox');
1011
});
1112

1213
test('should not mangle code from esbuild pure annotations', async () => {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
},
1010
"devDependencies": {
1111
"@sveltejs/vite-plugin-svelte": "workspace:^",
12+
"@tsconfig/svelte": "^5.0.4",
1213
"sass": "^1.89.1",
1314
"stylus": "^0.64.0",
1415
"svelte": "^5.33.18",

0 commit comments

Comments
 (0)