@sveltejs/kit 2.12.2 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "2.12.2",
3
+ "version": "2.13.0",
4
4
  "description": "SvelteKit is the fastest way to build Svelte apps",
5
5
  "keywords": [
6
6
  "framework",
@@ -142,7 +142,8 @@ const options = object(
142
142
  outDir: string('.svelte-kit'),
143
143
 
144
144
  output: object({
145
- preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs'], 'modulepreload')
145
+ preloadStrategy: list(['modulepreload', 'preload-js', 'preload-mjs']),
146
+ bundleStrategy: list(['split', 'single'])
146
147
  }),
147
148
 
148
149
  paths: object({
@@ -498,6 +498,15 @@ export interface KitConfig {
498
498
  * @since 1.8.4
499
499
  */
500
500
  preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
501
+ /**
502
+ * If `'split'`, splits the app up into multiple .js/.css files so that they are loaded lazily as the user navigates around the app. This is the default, and is recommended for most scenarios.
503
+ * If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
504
+ *
505
+ * When using `'split'`, you can also adjust the bundling behaviour by setting [`output.experimentalMinChunkSize`](https://rollupjs.org/configuration-options/#output-experimentalminchunksize) and [`output.manualChunks`](https://rollupjs.org/configuration-options/#output-manualchunks)inside your Vite config's [`build.rollupOptions`](https://vite.dev/config/build-options.html#build-rollupoptions).
506
+ * @default 'split'
507
+ * @since 2.13.0
508
+ */
509
+ bundleStrategy?: 'split' | 'single';
501
510
  };
502
511
  paths?: {
503
512
  /**
@@ -11,8 +11,9 @@ import { normalizePath } from 'vite';
11
11
  * @param {import('vite').Manifest} server_manifest
12
12
  * @param {import('vite').Manifest | null} client_manifest
13
13
  * @param {import('vite').Rollup.OutputAsset[] | null} css
14
+ * @param {import('types').RecursiveRequired<import('types').ValidatedConfig['kit']['output']>} output_config
14
15
  */
15
- export function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css) {
16
+ export function build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css, output_config) {
16
17
  mkdirp(`${out}/server/nodes`);
17
18
  mkdirp(`${out}/server/stylesheets`);
18
19
 
@@ -69,7 +70,7 @@ export function build_server_nodes(out, kit, manifest_data, server_manifest, cli
69
70
  exports.push(`export const server_id = ${s(node.server)};`);
70
71
  }
71
72
 
72
- if (client_manifest && (node.universal || node.component)) {
73
+ if (client_manifest && (node.universal || node.component) && output_config.bundleStrategy === 'split') {
73
74
  const entry = find_deps(
74
75
  client_manifest,
75
76
  `${normalizePath(kit.outDir)}/generated/client-optimized/nodes/${i}.js`,
@@ -361,6 +361,10 @@ async function kit({ svelte_config }) {
361
361
  name: 'vite-plugin-sveltekit-virtual-modules',
362
362
 
363
363
  resolveId(id, importer) {
364
+ if (id === '__sveltekit/manifest') {
365
+ return `${kit.outDir}/generated/client-optimized/app.js`;
366
+ }
367
+
364
368
  // If importing from a service-worker, only allow $service-worker & $env/static/public, but none of the other virtual modules.
365
369
  // This check won't catch transitive imports, but it will warn when the import comes from a service-worker directly.
366
370
  // Transitive imports will be caught during the build.
@@ -605,10 +609,11 @@ async function kit({ svelte_config }) {
605
609
  const name = posixify(path.join('entries/matchers', key));
606
610
  input[name] = path.resolve(file);
607
611
  });
612
+ } else if (svelte_config.kit.output.bundleStrategy !== 'split') {
613
+ input['bundle'] = `${runtime_directory}/client/bundle.js`;
608
614
  } else {
609
615
  input['entry/start'] = `${runtime_directory}/client/entry.js`;
610
616
  input['entry/app'] = `${kit.outDir}/generated/client-optimized/app.js`;
611
-
612
617
  manifest_data.nodes.forEach((node, i) => {
613
618
  if (node.component || node.universal) {
614
619
  input[`nodes/${i}`] = `${kit.outDir}/generated/client-optimized/nodes/${i}.js`;
@@ -643,7 +648,9 @@ async function kit({ svelte_config }) {
643
648
  chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[name].[hash].${ext}`,
644
649
  assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
645
650
  hoistTransitiveImports: false,
646
- sourcemapIgnoreList
651
+ sourcemapIgnoreList,
652
+ manualChunks:
653
+ svelte_config.kit.output.bundleStrategy === 'single' ? () => 'bundle' : undefined
647
654
  },
648
655
  preserveEntrySignatures: 'strict'
649
656
  },
@@ -775,7 +782,15 @@ async function kit({ svelte_config }) {
775
782
  // first, build server nodes without the client manifest so we can analyse it
776
783
  log.info('Analysing routes');
777
784
 
778
- build_server_nodes(out, kit, manifest_data, server_manifest, null, null);
785
+ build_server_nodes(
786
+ out,
787
+ kit,
788
+ manifest_data,
789
+ server_manifest,
790
+ null,
791
+ null,
792
+ svelte_config.output
793
+ );
779
794
 
780
795
  const metadata = await analyse({
781
796
  manifest_path,
@@ -825,19 +840,34 @@ async function kit({ svelte_config }) {
825
840
 
826
841
  const deps_of = /** @param {string} f */ (f) =>
827
842
  find_deps(client_manifest, posixify(path.relative('.', f)), false);
828
- const start = deps_of(`${runtime_directory}/client/entry.js`);
829
- const app = deps_of(`${kit.outDir}/generated/client-optimized/app.js`);
830
-
831
- build_data.client = {
832
- start: start.file,
833
- app: app.file,
834
- imports: [...start.imports, ...app.imports],
835
- stylesheets: [...start.stylesheets, ...app.stylesheets],
836
- fonts: [...start.fonts, ...app.fonts],
837
- uses_env_dynamic_public: output.some(
838
- (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
839
- )
840
- };
843
+
844
+ if (svelte_config.kit.output.bundleStrategy === 'split') {
845
+ const start = deps_of(`${runtime_directory}/client/entry.js`);
846
+ const app = deps_of(`${kit.outDir}/generated/client-optimized/app.js`);
847
+
848
+ build_data.client = {
849
+ start: start.file,
850
+ app: app.file,
851
+ imports: [...start.imports, ...app.imports],
852
+ stylesheets: [...start.stylesheets, ...app.stylesheets],
853
+ fonts: [...start.fonts, ...app.fonts],
854
+ uses_env_dynamic_public: output.some(
855
+ (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
856
+ )
857
+ };
858
+ } else {
859
+ const start = deps_of(`${runtime_directory}/client/bundle.js`);
860
+
861
+ build_data.client = {
862
+ start: start.file,
863
+ imports: start.imports,
864
+ stylesheets: start.stylesheets,
865
+ fonts: start.fonts,
866
+ uses_env_dynamic_public: output.some(
867
+ (chunk) => chunk.type === 'chunk' && chunk.modules[env_dynamic_public]
868
+ )
869
+ };
870
+ }
841
871
 
842
872
  const css = output.filter(
843
873
  /** @type {(value: any) => value is import('vite').Rollup.OutputAsset} */
@@ -855,7 +885,15 @@ async function kit({ svelte_config }) {
855
885
  );
856
886
 
857
887
  // regenerate nodes with the client manifest...
858
- build_server_nodes(out, kit, manifest_data, server_manifest, client_manifest, css);
888
+ build_server_nodes(
889
+ out,
890
+ kit,
891
+ manifest_data,
892
+ server_manifest,
893
+ client_manifest,
894
+ css,
895
+ svelte_config.kit.output
896
+ );
859
897
 
860
898
  // ...and prerender
861
899
  const { prerendered, prerender_map } = await prerender({
@@ -0,0 +1,15 @@
1
+ /* if `bundleStrategy === 'single'`, this file is used as the entry point */
2
+
3
+ import * as kit from './entry.js';
4
+
5
+ // @ts-expect-error
6
+ import * as app from '__sveltekit/manifest';
7
+
8
+ /**
9
+ *
10
+ * @param {HTMLElement} element
11
+ * @param {import('./types.js').HydrateOptions} options
12
+ */
13
+ export function start(element, options) {
14
+ kit.start(app, element, options);
15
+ }
@@ -2354,15 +2354,7 @@ function _start_router() {
2354
2354
 
2355
2355
  /**
2356
2356
  * @param {HTMLElement} target
2357
- * @param {{
2358
- * status: number;
2359
- * error: App.Error | null;
2360
- * node_ids: number[];
2361
- * params: Record<string, string>;
2362
- * route: { id: string | null };
2363
- * data: Array<import('types').ServerDataNode | null>;
2364
- * form: Record<string, any> | null;
2365
- * }} opts
2357
+ * @param {import('./types.js').HydrateOptions} opts
2366
2358
  */
2367
2359
  async function _hydrate(
2368
2360
  target,
@@ -1,5 +1,13 @@
1
1
  import { SvelteComponent } from 'svelte';
2
- import { ClientHooks, CSRPageNode, CSRPageNodeLoader, CSRRoute, TrailingSlash, Uses } from 'types';
2
+ import {
3
+ ClientHooks,
4
+ CSRPageNode,
5
+ CSRPageNodeLoader,
6
+ CSRRoute,
7
+ ServerDataNode,
8
+ TrailingSlash,
9
+ Uses
10
+ } from 'types';
3
11
  import { Page, ParamMatcher } from '@sveltejs/kit';
4
12
 
5
13
  export interface SvelteKitApp {
@@ -88,3 +96,13 @@ export interface NavigationState {
88
96
  route: CSRRoute | null;
89
97
  url: URL;
90
98
  }
99
+
100
+ export interface HydrateOptions {
101
+ status: number;
102
+ error: App.Error | null;
103
+ node_ids: number[];
104
+ params: Record<string, string>;
105
+ route: { id: string | null };
106
+ data: Array<ServerDataNode | null>;
107
+ form: Record<string, any> | null;
108
+ }
@@ -354,7 +354,7 @@ export async function render_response({
354
354
  ${properties.join(',\n\t\t\t\t\t\t')}
355
355
  };`);
356
356
 
357
- const args = ['app', 'element'];
357
+ const args = ['element'];
358
358
 
359
359
  blocks.push('const element = document.currentScript.parentElement;');
360
360
 
@@ -392,24 +392,26 @@ export async function render_response({
392
392
  args.push(`{\n${indent}\t${hydrate.join(`,\n${indent}\t`)}\n${indent}}`);
393
393
  }
394
394
 
395
+ // `client.app` is a proxy for `bundleStrategy !== 'single'`
396
+ const boot = client.app
397
+ ? `Promise.all([
398
+ import(${s(prefixed(client.start))}),
399
+ import(${s(prefixed(client.app))})
400
+ ]).then(([kit, app]) => {
401
+ kit.start(app, ${args.join(', ')});
402
+ });`
403
+ : `import(${s(prefixed(client.start))}).then((app) => {
404
+ app.start(${args.join(', ')})
405
+ });`;
406
+
395
407
  if (load_env_eagerly) {
396
408
  blocks.push(`import(${s(`${base}/${options.app_dir}/env.js`)}).then(({ env }) => {
397
409
  ${global}.env = env;
398
410
 
399
- Promise.all([
400
- import(${s(prefixed(client.start))}),
401
- import(${s(prefixed(client.app))})
402
- ]).then(([kit, app]) => {
403
- kit.start(${args.join(', ')});
404
- });
411
+ ${boot.replace(/\n/g, '\n\t')}
405
412
  });`);
406
413
  } else {
407
- blocks.push(`Promise.all([
408
- import(${s(prefixed(client.start))}),
409
- import(${s(prefixed(client.app))})
410
- ]).then(([kit, app]) => {
411
- kit.start(${args.join(', ')});
412
- });`);
414
+ blocks.push(boot);
413
415
  }
414
416
 
415
417
  if (options.service_worker) {
@@ -69,7 +69,7 @@ export interface BuildData {
69
69
  service_worker: string | null;
70
70
  client: {
71
71
  start: string;
72
- app: string;
72
+ app?: string;
73
73
  imports: string[];
74
74
  stylesheets: string[];
75
75
  fonts: string[];
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '2.12.2';
4
+ export const VERSION = '2.13.0';
package/types/index.d.ts CHANGED
@@ -480,6 +480,15 @@ declare module '@sveltejs/kit' {
480
480
  * @since 1.8.4
481
481
  */
482
482
  preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
483
+ /**
484
+ * If `'split'`, splits the app up into multiple .js/.css files so that they are loaded lazily as the user navigates around the app. This is the default, and is recommended for most scenarios.
485
+ * If `'single'`, creates just one .js bundle and one .css file containing code for the entire app.
486
+ *
487
+ * When using `'split'`, you can also adjust the bundling behaviour by setting [`output.experimentalMinChunkSize`](https://rollupjs.org/configuration-options/#output-experimentalminchunksize) and [`output.manualChunks`](https://rollupjs.org/configuration-options/#output-manualchunks)inside your Vite config's [`build.rollupOptions`](https://vite.dev/config/build-options.html#build-rollupoptions).
488
+ * @default 'split'
489
+ * @since 2.13.0
490
+ */
491
+ bundleStrategy?: 'split' | 'single';
483
492
  };
484
493
  paths?: {
485
494
  /**
@@ -1641,7 +1650,7 @@ declare module '@sveltejs/kit' {
1641
1650
  service_worker: string | null;
1642
1651
  client: {
1643
1652
  start: string;
1644
- app: string;
1653
+ app?: string;
1645
1654
  imports: string[];
1646
1655
  stylesheets: string[];
1647
1656
  fonts: string[];
@@ -159,6 +159,6 @@
159
159
  null,
160
160
  null
161
161
  ],
162
- "mappings": "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",
162
+ "mappings": "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",
163
163
  "ignoreList": []
164
164
  }