From c46d34e8830c78003773b9d53b8adef6f06c6d41 Mon Sep 17 00:00:00 2001 From: bluwy Date: Thu, 8 Dec 2022 22:39:36 +0800 Subject: [PATCH 1/3] [breaking] make `sveltekit()` return a promise --- .changeset/fast-mails-run.md | 5 ++++ packages/kit/src/exports/vite/index.js | 32 +++++++++++++++++++------- packages/kit/types/ambient.d.ts | 2 +- 3 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 .changeset/fast-mails-run.md diff --git a/.changeset/fast-mails-run.md b/.changeset/fast-mails-run.md new file mode 100644 index 000000000000..929802c22d9b --- /dev/null +++ b/.changeset/fast-mails-run.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +[breaking] make `sveltekit()` return a promise of array of Vite plugins diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 179104d8c19b..009758246c8a 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -59,9 +59,27 @@ const enforced_config = { root: true }; -/** @return {import('vite').Plugin[]} */ -export function sveltekit() { - return [...svelte(), kit()]; +/** @return {Promise} */ +export async function sveltekit() { + const svelte_config = await load_config(); + /** @type {import('@sveltejs/vite-plugin-svelte').Options} */ + const vite_plugin_svelte_options = svelte_config.vitePlugin || {}; + + // Default hydratable to true + if (vite_plugin_svelte_options.compilerOptions?.hydratable == null) { + vite_plugin_svelte_options.compilerOptions = { + ...vite_plugin_svelte_options.compilerOptions, + hydratable: true + }; + } + + return [ + ...svelte({ + configFile: false, + ...vite_plugin_svelte_options + }), + kit({ svelte_config }) + ]; } /** @@ -74,12 +92,11 @@ export function sveltekit() { * - https://rollupjs.org/guide/en/#build-hooks * - https://rollupjs.org/guide/en/#output-generation-hooks * + * @param {{ svelte_config: import('types').ValidatedConfig }} options + * * @return {import('vite').Plugin} */ -function kit() { - /** @type {import('types').ValidatedConfig} */ - let svelte_config; - +function kit({ svelte_config }) { /** @type {import('vite').ResolvedConfig} */ let vite_config; @@ -192,7 +209,6 @@ function kit() { */ async config(config, config_env) { vite_config_env = config_env; - svelte_config = await load_config(); env = get_env(svelte_config.kit.env, vite_config_env.mode); diff --git a/packages/kit/types/ambient.d.ts b/packages/kit/types/ambient.d.ts index 940fec911bbe..9011f3d34d3f 100644 --- a/packages/kit/types/ambient.d.ts +++ b/packages/kit/types/ambient.d.ts @@ -433,5 +433,5 @@ declare module '@sveltejs/kit/vite' { /** * Returns the SvelteKit Vite plugins. */ - export function sveltekit(): Plugin[]; + export function sveltekit(): Promise; } From cea4c4badce4e7344bb2d60065a3914e7dfd5a83 Mon Sep 17 00:00:00 2001 From: Bjorn Lu Date: Thu, 8 Dec 2022 22:54:31 +0800 Subject: [PATCH 2/3] remove empty line [skip ci] Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com> --- packages/kit/src/exports/vite/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 009758246c8a..8d751b937737 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -93,7 +93,6 @@ export async function sveltekit() { * - https://rollupjs.org/guide/en/#output-generation-hooks * * @param {{ svelte_config: import('types').ValidatedConfig }} options - * * @return {import('vite').Plugin} */ function kit({ svelte_config }) { From 976ef17405016d14b481cd6d1bd10e510ea62df7 Mon Sep 17 00:00:00 2001 From: bluwy Date: Thu, 8 Dec 2022 23:50:46 +0800 Subject: [PATCH 3/3] correctly pass options --- packages/kit/src/exports/vite/index.js | 30 ++++++++++++-------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index 8d751b937737..6f306c90166d 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -62,24 +62,22 @@ const enforced_config = { /** @return {Promise} */ export async function sveltekit() { const svelte_config = await load_config(); - /** @type {import('@sveltejs/vite-plugin-svelte').Options} */ - const vite_plugin_svelte_options = svelte_config.vitePlugin || {}; - // Default hydratable to true - if (vite_plugin_svelte_options.compilerOptions?.hydratable == null) { - vite_plugin_svelte_options.compilerOptions = { - ...vite_plugin_svelte_options.compilerOptions, - hydratable: true - }; - } + /** @type {import('@sveltejs/vite-plugin-svelte').Options} */ + const vite_plugin_svelte_options = { + configFile: false, + extensions: svelte_config.extensions, + preprocess: svelte_config.preprocess, + onwarn: svelte_config.onwarn, + compilerOptions: { + // @ts-expect-error SvelteKit requires hydratable true by default + hydratable: true, + ...svelte_config.compilerOptions + }, + ...svelte_config.vitePlugin + }; - return [ - ...svelte({ - configFile: false, - ...vite_plugin_svelte_options - }), - kit({ svelte_config }) - ]; + return [...svelte(vite_plugin_svelte_options), kit({ svelte_config })]; } /**