From 900d483cec46e502f1fbf2b3852b27031ea252c6 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:52:56 -0700 Subject: [PATCH 1/2] perf: only have Vite generate relative paths when required --- .changeset/violet-dryers-nail.md | 5 +++++ packages/kit/src/exports/vite/index.js | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .changeset/violet-dryers-nail.md diff --git a/.changeset/violet-dryers-nail.md b/.changeset/violet-dryers-nail.md new file mode 100644 index 000000000000..bb47025bb992 --- /dev/null +++ b/.changeset/violet-dryers-nail.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +perf: only have Vite generate relative paths when required diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index a26ca5ba3805..3d54214ec3bb 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -541,8 +541,14 @@ function kit({ svelte_config }) { // see the kit.output.preloadStrategy option for details on why we have multiple options here const ext = kit.output.preloadStrategy === 'preload-mjs' ? 'mjs' : 'js'; + // We could always use a relative asset base path here, but it's better for performance not to. + // E.g. Vite generates `new URL('/asset.png', import.meta).href` for a relative path vs just '/asset.png'. + // That's larger and takes longer to run and also causes an HTML diff between SSR and client + // causing us to do a more expensive hydration check. + const client_base = kit.paths.relative || kit.paths.assets ? './' : kit.paths.base; + new_config = { - base: ssr ? assets_base(kit) : './', + base: ssr ? assets_base(kit) : client_base, build: { copyPublicDir: !ssr, cssCodeSplit: true, From 2525a0e91cb19dc03d6bc0b6b0d45559d786b951 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Wed, 5 Jul 2023 12:54:51 -0700 Subject: [PATCH 2/2] fix for empty base path --- packages/kit/src/exports/vite/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 3d54214ec3bb..bd5bb27f61db 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -545,7 +545,7 @@ function kit({ svelte_config }) { // E.g. Vite generates `new URL('/asset.png', import.meta).href` for a relative path vs just '/asset.png'. // That's larger and takes longer to run and also causes an HTML diff between SSR and client // causing us to do a more expensive hydration check. - const client_base = kit.paths.relative || kit.paths.assets ? './' : kit.paths.base; + const client_base = kit.paths.relative || kit.paths.assets ? './' : kit.paths.base || '/'; new_config = { base: ssr ? assets_base(kit) : client_base,