Skip to content

Commit 8692d98

Browse files
fix: regression with rolldown-vite and single JS bundle apps (#13941)
Co-authored-by: Ben McCann <[email protected]>
1 parent 19a9597 commit 8692d98

File tree

5 files changed

+73
-67
lines changed

5 files changed

+73
-67
lines changed

.changeset/sharp-experts-unite.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
fix: regression with `rolldown-vite` not bundling a single JS file for single and inline apps

packages/kit/src/exports/vite/build/build_service_worker.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import { get_config_aliases, strip_virtual_prefix, get_env, normalize_id } from
66
import { create_static_module } from '../../../core/env.js';
77
import { env_static_public, service_worker } from '../module_ids.js';
88

9+
// @ts-ignore `vite.rolldownVersion` only exists in `rolldown-vite`
10+
const isRolldown = !!vite.rolldownVersion;
11+
912
/**
1013
* @param {string} out
1114
* @param {import('types').ValidatedKitConfig} kit
@@ -103,8 +106,7 @@ export async function build_service_worker(
103106
},
104107
output: {
105108
// .mjs so that esbuild doesn't incorrectly inject `export` https://github.com/vitejs/vite/issues/15379
106-
// @ts-ignore `vite.rolldownVersion` only exists in `rolldown-vite`
107-
entryFileNames: `service-worker.${vite.rolldownVersion ? 'js' : 'mjs'}`,
109+
entryFileNames: `service-worker.${isRolldown ? 'js' : 'mjs'}`,
108110
assetFileNames: `${kit.appDir}/immutable/assets/[name].[hash][extname]`,
109111
inlineDynamicImports: true
110112
}
@@ -130,8 +132,7 @@ export async function build_service_worker(
130132
});
131133

132134
// rename .mjs to .js to avoid incorrect MIME types with ancient webservers
133-
// @ts-ignore `vite.rolldownVersion` only exists in `rolldown-vite`
134-
if (!vite.rolldownVersion) {
135+
if (!isRolldown) {
135136
fs.renameSync(`${out}/client/service-worker.mjs`, `${out}/client/service-worker.js`);
136137
}
137138
}

packages/kit/src/exports/vite/index.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ async function kit({ svelte_config }) {
184184
/** @type {import('vite')} */
185185
const vite = await import_peer('vite');
186186

187+
// @ts-ignore `vite.rolldownVersion` only exists in `rolldown-vite`
188+
const isRolldown = !!vite.rolldownVersion;
189+
187190
const { kit } = svelte_config;
188191
const out = `${kit.outDir}/output`;
189192

@@ -661,8 +664,7 @@ Tips:
661664
copyPublicDir: !ssr,
662665
cssCodeSplit: svelte_config.kit.output.bundleStrategy !== 'inline',
663666
cssMinify: initial_config.build?.minify == null ? true : !!initial_config.build.minify,
664-
// don't use the default name to avoid collisions with 'static/manifest.json'
665-
manifest: '.vite/manifest.json', // TODO: remove this after bumping peer dep to vite 5
667+
manifest: true,
666668
outDir: `${out}/${ssr ? 'server' : 'client'}`,
667669
rollupOptions: {
668670
input: inline ? input['bundle'] : input,
@@ -674,14 +676,12 @@ Tips:
674676
assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
675677
hoistTransitiveImports: false,
676678
sourcemapIgnoreList,
677-
manualChunks: split ? undefined : () => 'bundle',
678-
inlineDynamicImports: false
679+
inlineDynamicImports: !split
679680
},
680681
preserveEntrySignatures: 'strict',
681682
onwarn(warning, handler) {
682683
if (
683-
// @ts-ignore `vite.rolldownVersion` only exists in `rolldown-vite`
684-
(vite.rolldownVersion
684+
(isRolldown
685685
? warning.code === 'IMPORT_IS_UNDEFINED'
686686
: warning.code === 'MISSING_EXPORT') &&
687687
warning.id === `${kit.outDir}/generated/client-optimized/app.js`
@@ -797,7 +797,7 @@ Tips:
797797
const log = logger({ verbose });
798798

799799
/** @type {import('vite').Manifest} */
800-
const server_manifest = JSON.parse(read(`${out}/server/${vite_config.build.manifest}`));
800+
const server_manifest = JSON.parse(read(`${out}/server/.vite/manifest.json`));
801801

802802
/** @type {import('types').BuildData} */
803803
const build_data = {
@@ -870,7 +870,7 @@ Tips:
870870
);
871871

872872
/** @type {import('vite').Manifest} */
873-
const client_manifest = JSON.parse(read(`${out}/client/${vite_config.build.manifest}`));
873+
const client_manifest = JSON.parse(read(`${out}/client/.vite/manifest.json`));
874874

875875
/**
876876
* @param {string} entry

0 commit comments

Comments
 (0)