From 4f2e1a8fff23ab08eb515e74e35c4ce8f3ea71b8 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Fri, 2 Dec 2022 11:42:24 +0100 Subject: [PATCH 1/2] [fix] rebuild manifest when client hook file is added/removed In contrast to server hooks, client hooks are written to the client manifest and therefore need rebuilding when they are added/removed --- .changeset/wet-trainers-perform.md | 5 +++++ packages/kit/src/exports/vite/dev/index.js | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/wet-trainers-perform.md diff --git a/.changeset/wet-trainers-perform.md b/.changeset/wet-trainers-perform.md new file mode 100644 index 000000000000..4bbda20fad14 --- /dev/null +++ b/.changeset/wet-trainers-perform.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +[fix] rebuild manifest when client hook file is added/removed diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index b09d1192bf76..9773b13963e0 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -202,7 +202,12 @@ export async function dev(vite, vite_config, svelte_config) { */ const watch = (event, cb) => { vite.watcher.on(event, (file) => { - if (file.startsWith(svelte_config.kit.files.routes + path.sep)) { + if ( + file.startsWith(svelte_config.kit.files.routes + path.sep) || + // in contrast to server hooks, client hooks are written to the client manifest + // and therefore need rebuilding when they are added/removed + file.startsWith(svelte_config.kit.files.hooks.client) + ) { cb(file); } }); From 255422c6500b8229fe9c7851401c80e644a4f73c Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Fri, 2 Dec 2022 12:44:44 +0100 Subject: [PATCH 2/2] also applies to param matchers --- .changeset/wet-trainers-perform.md | 2 +- packages/kit/src/core/sync/write_types/index.js | 2 +- packages/kit/src/exports/vite/dev/index.js | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.changeset/wet-trainers-perform.md b/.changeset/wet-trainers-perform.md index 4bbda20fad14..3b6c8f158e4c 100644 --- a/.changeset/wet-trainers-perform.md +++ b/.changeset/wet-trainers-perform.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -[fix] rebuild manifest when client hook file is added/removed +[fix] rebuild manifest when client hooks or param matcher file is added/removed diff --git a/packages/kit/src/core/sync/write_types/index.js b/packages/kit/src/core/sync/write_types/index.js index a10a654b5cc4..e6b13cd94c85 100644 --- a/packages/kit/src/core/sync/write_types/index.js +++ b/packages/kit/src/core/sync/write_types/index.js @@ -150,7 +150,7 @@ export async function write_types(config, manifest_data, file) { const id = '/' + posixify(path.relative(config.kit.files.routes, path.dirname(file))); const route = manifest_data.routes.find((route) => route.id === id); - if (!route) return; // this shouldn't ever happen + if (!route) return; if (!route.leaf && !route.layout && !route.endpoint) return; // nothing to do update_types(config, create_routes_map(manifest_data), route); diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 9773b13963e0..778b369de67a 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -204,6 +204,7 @@ export async function dev(vite, vite_config, svelte_config) { vite.watcher.on(event, (file) => { if ( file.startsWith(svelte_config.kit.files.routes + path.sep) || + file.startsWith(svelte_config.kit.files.params + path.sep) || // in contrast to server hooks, client hooks are written to the client manifest // and therefore need rebuilding when they are added/removed file.startsWith(svelte_config.kit.files.hooks.client)