diff --git a/.changeset/real-taxis-march.md b/.changeset/real-taxis-march.md new file mode 100644 index 000000000000..043e8dc757c9 --- /dev/null +++ b/.changeset/real-taxis-march.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Enable removal of non-browser code from client builds diff --git a/packages/kit/src/exports/vite/build/utils.js b/packages/kit/src/exports/vite/build/utils.js index da3134c313fa..d3bccfeb71b3 100644 --- a/packages/kit/src/exports/vite/build/utils.js +++ b/packages/kit/src/exports/vite/build/utils.js @@ -136,6 +136,7 @@ export function get_default_build_config({ config, input, ssr, outDir }) { __SVELTEKIT_APP_VERSION__: JSON.stringify(config.kit.version.name), __SVELTEKIT_APP_VERSION_FILE__: JSON.stringify(`${config.kit.appDir}/version.json`), __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: JSON.stringify(config.kit.version.pollInterval), + __SVELTEKIT_BROWSER__: ssr ? 'false' : 'true', __SVELTEKIT_DEV__: 'false' }, publicDir: ssr ? false : config.kit.files.assets, diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 489d78c9e4a6..e8dc10837eb4 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -30,6 +30,9 @@ const cwd = process.cwd(); export async function dev(vite, vite_config, svelte_config) { installPolyfills(); + // @ts-expect-error + globalThis.__SVELTEKIT_BROWSER__ = false; + sync.init(svelte_config, vite_config.mode); /** @type {import('types').Respond} */ diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index dd9d4f0e5c45..4f8b9ee42afd 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -249,8 +249,9 @@ function kit() { } }, define: { - __SVELTEKIT_DEV__: 'true', - __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: '0' + __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: '0', + __SVELTEKIT_BROWSER__: config_env.ssrBuild ? 'false' : 'true', + __SVELTEKIT_DEV__: 'true' }, publicDir: svelte_config.kit.files.assets, resolve: { diff --git a/packages/kit/src/utils/url.js b/packages/kit/src/utils/url.js index 1f658aac6ddc..53d3b671dba6 100644 --- a/packages/kit/src/utils/url.js +++ b/packages/kit/src/utils/url.js @@ -103,10 +103,12 @@ export function make_trackable(url, callback) { }); } - // @ts-ignore - tracked[Symbol.for('nodejs.util.inspect.custom')] = (depth, opts, inspect) => { - return inspect(url, opts); - }; + if (!__SVELTEKIT_BROWSER__) { + // @ts-ignore + tracked[Symbol.for('nodejs.util.inspect.custom')] = (depth, opts, inspect) => { + return inspect(url, opts); + }; + } disable_hash(tracked); diff --git a/packages/kit/src/utils/url.spec.js b/packages/kit/src/utils/url.spec.js index 4c359b224bad..cc92015743e7 100644 --- a/packages/kit/src/utils/url.spec.js +++ b/packages/kit/src/utils/url.spec.js @@ -2,6 +2,9 @@ import * as assert from 'uvu/assert'; import { describe } from './unit_test.js'; import { resolve, normalize_path, make_trackable, disable_search } from './url.js'; +// @ts-expect-error define global required in url.js +globalThis.__SVELTEKIT_BROWSER__ = false; + describe('resolve', (test) => { test('resolves a root-relative path', () => { assert.equal(resolve('/a/b/c', '/x/y/z'), '/x/y/z'); diff --git a/packages/kit/types/internal.d.ts b/packages/kit/types/internal.d.ts index 70e4b970656c..80f82653d562 100644 --- a/packages/kit/types/internal.d.ts +++ b/packages/kit/types/internal.d.ts @@ -375,5 +375,6 @@ declare global { const __SVELTEKIT_APP_VERSION__: string; const __SVELTEKIT_APP_VERSION_FILE__: string; const __SVELTEKIT_APP_VERSION_POLL_INTERVAL__: number; + const __SVELTEKIT_BROWSER__: boolean; const __SVELTEKIT_DEV__: boolean; }