From d2af15989e5d68e9174b9babf7c7b86e7889cefe Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 25 Sep 2023 21:37:28 +0800 Subject: [PATCH 01/11] move vite file removal to adapter methods --- packages/kit/src/core/adapt/builder.js | 12 +++++++++--- packages/kit/src/exports/vite/index.js | 6 +----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index eae0bd8b7ecf..d6be66b3eaf7 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -1,4 +1,4 @@ -import { existsSync, statSync, createReadStream, createWriteStream } from 'node:fs'; +import { existsSync, statSync, createReadStream, createWriteStream, unlinkSync } from 'node:fs'; import { extname, resolve } from 'node:path'; import { pipeline } from 'node:stream'; import { promisify } from 'node:util'; @@ -181,7 +181,10 @@ export function create_builder({ }, writeClient(dest) { - return copy(`${config.kit.outDir}/output/client`, dest); + const files = copy(`${config.kit.outDir}/output/client`, dest); + // avoid making vite files public + unlinkSync(`${dest}/.vite`); + return files; }, writePrerendered(dest) { @@ -190,7 +193,10 @@ export function create_builder({ }, writeServer(dest) { - return copy(`${config.kit.outDir}/output/server`, dest); + const files = copy(`${config.kit.outDir}/output/server`, dest); + // remove unused vite files + unlinkSync(`${dest}/.vite`); + return files; } }; } diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 94f242a1e468..b527fe44aaf3 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -555,7 +555,7 @@ function kit({ svelte_config }) { cssCodeSplit: true, cssMinify: initial_config.build?.minify == null ? true : !!initial_config.build.minify, // don't use the default name to avoid collisions with 'static/manifest.json' - manifest: 'vite-manifest.json', + manifest: '.vite/manifest.json', // TODO: we can remove this when vite 5 comes out outDir: `${out}/${ssr ? 'server' : 'client'}`, rollupOptions: { input, @@ -805,10 +805,6 @@ function kit({ svelte_config }) { .cyan('npm run preview')} to preview your production build locally.` ); - // avoid making the manifest available to users - fs.unlinkSync(`${out}/client/${vite_config.build.manifest}`); - fs.unlinkSync(`${out}/server/${vite_config.build.manifest}`); - if (kit.adapter) { const { adapt } = await import('../../core/adapt/index.js'); await adapt(svelte_config, build_data, metadata, prerendered, prerender_map, log); From 99a7d0ea48c6d94a23b4256d58fd152bf1a6dea6 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 25 Sep 2023 21:38:39 +0800 Subject: [PATCH 02/11] changeset --- .changeset/young-wolves-sing.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/young-wolves-sing.md diff --git a/.changeset/young-wolves-sing.md b/.changeset/young-wolves-sing.md new file mode 100644 index 000000000000..1abfbd3e2ea8 --- /dev/null +++ b/.changeset/young-wolves-sing.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: only remove Vite manifest when copying files From 6267d641c0f3de8cb7b0f9834758649a21abe650 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 25 Sep 2023 22:25:32 +0800 Subject: [PATCH 03/11] oops --- packages/kit/src/core/adapt/builder.js | 19 ++++++++++++++----- packages/kit/src/core/adapt/builder.spec.js | 6 +++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index d6be66b3eaf7..d786ba1e4dde 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -1,4 +1,4 @@ -import { existsSync, statSync, createReadStream, createWriteStream, unlinkSync } from 'node:fs'; +import { existsSync, statSync, createReadStream, createWriteStream, rmSync } from 'node:fs'; import { extname, resolve } from 'node:path'; import { pipeline } from 'node:stream'; import { promisify } from 'node:util'; @@ -183,8 +183,8 @@ export function create_builder({ writeClient(dest) { const files = copy(`${config.kit.outDir}/output/client`, dest); // avoid making vite files public - unlinkSync(`${dest}/.vite`); - return files; + rmSync(`${dest}/.vite`, { force: true, recursive: true }); + return filter_vite_files(files); }, writePrerendered(dest) { @@ -195,8 +195,8 @@ export function create_builder({ writeServer(dest) { const files = copy(`${config.kit.outDir}/output/server`, dest); // remove unused vite files - unlinkSync(`${dest}/.vite`); - return files; + rmSync(`${dest}/.vite`, { force: true, recursive: true }); + return filter_vite_files(files); } }; } @@ -222,3 +222,12 @@ async function compress_file(file, format = 'gz') { await pipe(source, compress, destination); } + +/** + * + * @param {string[]} files + * @returns {string[]} + */ +export function filter_vite_files(files) { + return files.filter((file) => !file.startsWith('.vite/')); +} diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index 0b69433d8951..ad9aa7671e45 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -2,7 +2,7 @@ import { existsSync, rmSync } from 'node:fs'; import { join, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import { assert, expect, test } from 'vitest'; -import { create_builder } from './builder.js'; +import { create_builder, filter_vite_files } from './builder.js'; import { posixify } from '../../utils/filesystem.js'; import { list_files } from '../utils.js'; @@ -47,12 +47,12 @@ test('copy files', () => { rmSync(dest, { recursive: true, force: true }); expect(builder.writeClient(dest)).toEqual(list_files(dest).map(posixify)); - expect(list_files(`${outDir}/output/client`)).toEqual(list_files(dest)); + expect(filter_vite_files(list_files(`${outDir}/output/client`))).toEqual(list_files(dest)); rmSync(dest, { recursive: true, force: true }); expect(builder.writeServer(dest)).toEqual(list_files(dest).map(posixify)); - expect(list_files(`${outDir}/output/server`)).toEqual(list_files(dest)); + expect(filter_vite_files(list_files(`${outDir}/output/server`))).toEqual(list_files(dest)); rmSync(dest, { force: true, recursive: true }); }); From 2f4134c6bf810d994421af8bc1ff98b2302dceed Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 26 Sep 2023 01:43:20 +0800 Subject: [PATCH 04/11] retain vite manifest in server bundle --- packages/kit/src/core/adapt/builder.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index d786ba1e4dde..9b1e5426142a 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -194,8 +194,6 @@ export function create_builder({ writeServer(dest) { const files = copy(`${config.kit.outDir}/output/server`, dest); - // remove unused vite files - rmSync(`${dest}/.vite`, { force: true, recursive: true }); return filter_vite_files(files); } }; @@ -224,7 +222,6 @@ async function compress_file(file, format = 'gz') { } /** - * * @param {string[]} files * @returns {string[]} */ From f74df7837d259f2f465eacb062a93472475b2547 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Tue, 26 Sep 2023 21:26:13 +0800 Subject: [PATCH 05/11] use rimraf instead of rmSync --- packages/kit/src/core/adapt/builder.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 9b1e5426142a..87cac516f320 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -1,4 +1,4 @@ -import { existsSync, statSync, createReadStream, createWriteStream, rmSync } from 'node:fs'; +import { existsSync, statSync, createReadStream, createWriteStream } from 'node:fs'; import { extname, resolve } from 'node:path'; import { pipeline } from 'node:stream'; import { promisify } from 'node:util'; @@ -183,7 +183,7 @@ export function create_builder({ writeClient(dest) { const files = copy(`${config.kit.outDir}/output/client`, dest); // avoid making vite files public - rmSync(`${dest}/.vite`, { force: true, recursive: true }); + rimraf(`${dest}/.vite`); return filter_vite_files(files); }, From 3807bcfecde2a3824f9d2787887be9435851ea9b Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 27 Sep 2023 03:34:10 +0800 Subject: [PATCH 06/11] use filter when copying client files --- packages/kit/src/core/adapt/builder.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 87cac516f320..3aa22c21fb42 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -181,9 +181,10 @@ export function create_builder({ }, writeClient(dest) { - const files = copy(`${config.kit.outDir}/output/client`, dest); - // avoid making vite files public - rimraf(`${dest}/.vite`); + const files = copy(`${config.kit.outDir}/output/client`, dest, { + // avoid making vite files public + filter: (basename) => basename === '.vite' + }); return filter_vite_files(files); }, From 2e1219fa8ac432562f43f0646a99877334dc52da Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 27 Sep 2023 03:39:21 +0800 Subject: [PATCH 07/11] oops --- packages/kit/src/core/adapt/builder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 3aa22c21fb42..7f3d0763c891 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -183,7 +183,7 @@ export function create_builder({ writeClient(dest) { const files = copy(`${config.kit.outDir}/output/client`, dest, { // avoid making vite files public - filter: (basename) => basename === '.vite' + filter: (basename) => basename !== '.vite' }); return filter_vite_files(files); }, From aa7a95c62639ff83a63b7371620dcaee086a5586 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 27 Sep 2023 03:51:10 +0800 Subject: [PATCH 08/11] update todo comment --- 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 b527fe44aaf3..e1a5053f9719 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -555,7 +555,7 @@ function kit({ svelte_config }) { cssCodeSplit: true, cssMinify: initial_config.build?.minify == null ? true : !!initial_config.build.minify, // don't use the default name to avoid collisions with 'static/manifest.json' - manifest: '.vite/manifest.json', // TODO: we can remove this when vite 5 comes out + manifest: '.vite/manifest.json', // TODO: remove this after bumping peer dep to vite 5 outDir: `${out}/${ssr ? 'server' : 'client'}`, rollupOptions: { input, From 46a2804728d6fd044947a6ea1f8347177dc6e640 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 27 Sep 2023 03:51:25 +0800 Subject: [PATCH 09/11] remove vite file filter helper method --- packages/kit/src/core/adapt/builder.js | 14 ++------------ packages/kit/src/core/adapt/builder.spec.js | 6 ++++-- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 7f3d0763c891..00dd0f868e05 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -181,11 +181,10 @@ export function create_builder({ }, writeClient(dest) { - const files = copy(`${config.kit.outDir}/output/client`, dest, { + return copy(`${config.kit.outDir}/output/client`, dest, { // avoid making vite files public filter: (basename) => basename !== '.vite' }); - return filter_vite_files(files); }, writePrerendered(dest) { @@ -194,8 +193,7 @@ export function create_builder({ }, writeServer(dest) { - const files = copy(`${config.kit.outDir}/output/server`, dest); - return filter_vite_files(files); + return copy(`${config.kit.outDir}/output/server`, dest); } }; } @@ -221,11 +219,3 @@ async function compress_file(file, format = 'gz') { await pipe(source, compress, destination); } - -/** - * @param {string[]} files - * @returns {string[]} - */ -export function filter_vite_files(files) { - return files.filter((file) => !file.startsWith('.vite/')); -} diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index ad9aa7671e45..626b07e0452d 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -47,12 +47,14 @@ test('copy files', () => { rmSync(dest, { recursive: true, force: true }); expect(builder.writeClient(dest)).toEqual(list_files(dest).map(posixify)); - expect(filter_vite_files(list_files(`${outDir}/output/client`))).toEqual(list_files(dest)); + expect( + list_files(`${outDir}/output/client`).filter((file) => !file.startsWith('.vite/')) + ).toEqual(list_files(dest)); rmSync(dest, { recursive: true, force: true }); expect(builder.writeServer(dest)).toEqual(list_files(dest).map(posixify)); - expect(filter_vite_files(list_files(`${outDir}/output/server`))).toEqual(list_files(dest)); + expect(list_files(`${outDir}/output/server`)).toEqual(list_files(dest)); rmSync(dest, { force: true, recursive: true }); }); From 478bfc03f32bb84416539e6594e9962f5deb2e49 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 27 Sep 2023 03:55:52 +0800 Subject: [PATCH 10/11] remove invalid import --- packages/kit/src/core/adapt/builder.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapt/builder.spec.js b/packages/kit/src/core/adapt/builder.spec.js index 626b07e0452d..d61fe4c70860 100644 --- a/packages/kit/src/core/adapt/builder.spec.js +++ b/packages/kit/src/core/adapt/builder.spec.js @@ -2,7 +2,7 @@ import { existsSync, rmSync } from 'node:fs'; import { join, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import { assert, expect, test } from 'vitest'; -import { create_builder, filter_vite_files } from './builder.js'; +import { create_builder } from './builder.js'; import { posixify } from '../../utils/filesystem.js'; import { list_files } from '../utils.js'; From 64d187db315984b8745463ce00d283ca11f8211c Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Wed, 27 Sep 2023 03:56:00 +0800 Subject: [PATCH 11/11] clarify vite file comment --- packages/kit/src/core/adapt/builder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/core/adapt/builder.js b/packages/kit/src/core/adapt/builder.js index 00dd0f868e05..c7e57bd9ab29 100644 --- a/packages/kit/src/core/adapt/builder.js +++ b/packages/kit/src/core/adapt/builder.js @@ -182,7 +182,7 @@ export function create_builder({ writeClient(dest) { return copy(`${config.kit.outDir}/output/client`, dest, { - // avoid making vite files public + // avoid making vite build artefacts public filter: (basename) => basename !== '.vite' }); },