diff --git a/.changeset/hooks-server-assets.md b/.changeset/hooks-server-assets.md new file mode 100644 index 000000000000..988f03844a5c --- /dev/null +++ b/.changeset/hooks-server-assets.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: include `hooks.server` and `hooks.universal` as explicit Vite build inputs to ensure assets imported by hooks files are correctly discovered diff --git a/packages/kit/src/core/generate_manifest/find_server_assets.js b/packages/kit/src/core/generate_manifest/find_server_assets.js index b7232e63e0b8..044db8419107 100644 --- a/packages/kit/src/core/generate_manifest/find_server_assets.js +++ b/packages/kit/src/core/generate_manifest/find_server_assets.js @@ -13,7 +13,6 @@ export function find_server_assets(build_data, routes) { */ const used_nodes = new Set([0, 1]); - // TODO add hooks.server.js asset imports /** @type {Set} */ const server_assets = new Set(); @@ -49,5 +48,9 @@ export function find_server_assets(build_data, routes) { add_assets(build_data.manifest_data.hooks.server); } + if (build_data.manifest_data.hooks.universal) { + add_assets(build_data.manifest_data.hooks.universal); + } + return Array.from(server_assets); } diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index ec28e0271384..47116b4410f5 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -848,6 +848,14 @@ async function kit({ svelte_config }) { input[name] = path.resolve(file); }); + // ...and the hooks files + if (manifest_data.hooks.server) { + input['entries/hooks.server'] = path.resolve(manifest_data.hooks.server); + } + if (manifest_data.hooks.universal) { + input['entries/hooks.universal'] = path.resolve(manifest_data.hooks.universal); + } + // ...and the server instrumentation file const server_instrumentation = resolve_entry( path.join(kit.files.src, 'instrumentation.server')