From 2641f84620cf2d8ba51d91bdd906ce3e3a1af614 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 21 Dec 2023 12:57:08 -0500 Subject: [PATCH 1/3] chore: use peer dependencies rather than dev dependencies --- packages/kit/package.json | 1 + packages/kit/src/exports/vite/index.js | 24 +++++++++++++++++++----- pnpm-lock.yaml | 4 +++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/packages/kit/package.json b/packages/kit/package.json index 5bba8cb9142e..46d7b0ad199b 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -31,6 +31,7 @@ "@types/sade": "^1.7.8", "@types/set-cookie-parser": "^2.4.7", "dts-buddy": "^0.4.3", + "import-meta-resolve": "^4.0.0", "rollup": "^4.8.0", "svelte": "^4.2.8", "svelte-preprocess": "^5.1.2", diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index eb7d93d92e13..dbd4cc6a53c6 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -1,9 +1,8 @@ import fs from 'node:fs'; import path from 'node:path'; -import { svelte } from '@sveltejs/vite-plugin-svelte'; +import * as imr from 'import-meta-resolve'; import colors from 'kleur'; -import * as vite from 'vite'; import { copy, mkdirp, posixify, read, resolve_entry, rimraf } from '../../utils/filesystem.js'; import { create_static_module, create_dynamic_module } from '../../core/env.js'; @@ -34,6 +33,7 @@ import { sveltekit_environment, sveltekit_paths } from './module_ids.js'; +import { pathToFileURL } from 'node:url'; const cwd = process.cwd(); @@ -122,6 +122,16 @@ const warning_preprocessor = { } }; +/** + * Resolve a dependency relative to the current working directory, + * rather than relative to this package + * @param {string} dependency + */ +async function resolve_peer_dependency(dependency) { + const resolved = await imr.resolve(dependency, pathToFileURL(process.cwd() + '/dummy.js')); + return import(resolved); +} + /** * Returns the SvelteKit Vite plugins. * @returns {Promise} @@ -153,7 +163,9 @@ export async function sveltekit() { ...svelte_config.vitePlugin }; - return [...svelte(vite_plugin_svelte_options), ...kit({ svelte_config })]; + const { svelte } = await resolve_peer_dependency('@sveltejs/vite-plugin-svelte'); + + return [...svelte(vite_plugin_svelte_options), ...(await kit({ svelte_config }))]; } // These variables live outside the `kit()` function because it is re-invoked by each Vite build @@ -174,9 +186,11 @@ let manifest_data; * - https://rollupjs.org/guide/en/#output-generation-hooks * * @param {{ svelte_config: import('types').ValidatedConfig }} options - * @return {import('vite').Plugin[]} + * @return {Promise} */ -function kit({ svelte_config }) { +async function kit({ svelte_config }) { + const vite = await resolve_peer_dependency('vite'); + const { kit } = svelte_config; const out = `${kit.outDir}/output`; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eeced6c720cb..785bce7d3d5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -468,6 +468,9 @@ importers: dts-buddy: specifier: ^0.4.3 version: 0.4.3(typescript@5.3.3) + import-meta-resolve: + specifier: ^4.0.0 + version: 4.0.0 rollup: specifier: ^4.8.0 version: 4.8.0 @@ -4096,7 +4099,6 @@ packages: /import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - dev: false /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} From 3da27adb41af48c91e5e5d4fa96c2be9950a13ee Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 21 Dec 2023 13:05:05 -0500 Subject: [PATCH 2/3] changeset --- .changeset/smart-timers-promise.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smart-timers-promise.md diff --git a/.changeset/smart-timers-promise.md b/.changeset/smart-timers-promise.md new file mode 100644 index 000000000000..51081ad6ef27 --- /dev/null +++ b/.changeset/smart-timers-promise.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +chore: use peer dependencies when linked From 39e4fe5b12d0196bc38c06584e53f6f6493c0e5f Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 21 Dec 2023 14:31:45 -0500 Subject: [PATCH 3/3] move to dependencies --- packages/kit/package.json | 2 +- packages/kit/src/exports/vite/index.js | 1 + pnpm-lock.yaml | 7 ++++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/kit/package.json b/packages/kit/package.json index 46d7b0ad199b..d0c450a024b5 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -15,6 +15,7 @@ "cookie": "^0.6.0", "devalue": "^4.3.2", "esm-env": "^1.0.0", + "import-meta-resolve": "^4.0.0", "kleur": "^4.1.5", "magic-string": "^0.30.5", "mrmime": "^2.0.0", @@ -31,7 +32,6 @@ "@types/sade": "^1.7.8", "@types/set-cookie-parser": "^2.4.7", "dts-buddy": "^0.4.3", - "import-meta-resolve": "^4.0.0", "rollup": "^4.8.0", "svelte": "^4.2.8", "svelte-preprocess": "^5.1.2", diff --git a/packages/kit/src/exports/vite/index.js b/packages/kit/src/exports/vite/index.js index dbd4cc6a53c6..89c8b5b3b9dc 100644 --- a/packages/kit/src/exports/vite/index.js +++ b/packages/kit/src/exports/vite/index.js @@ -128,6 +128,7 @@ const warning_preprocessor = { * @param {string} dependency */ async function resolve_peer_dependency(dependency) { + // @ts-expect-error the types are wrong const resolved = await imr.resolve(dependency, pathToFileURL(process.cwd() + '/dummy.js')); return import(resolved); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 785bce7d3d5c..80c926dfef4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -425,6 +425,9 @@ importers: esm-env: specifier: ^1.0.0 version: 1.0.0 + import-meta-resolve: + specifier: ^4.0.0 + version: 4.0.0 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -468,9 +471,6 @@ importers: dts-buddy: specifier: ^0.4.3 version: 0.4.3(typescript@5.3.3) - import-meta-resolve: - specifier: ^4.0.0 - version: 4.0.0 rollup: specifier: ^4.8.0 version: 4.8.0 @@ -4099,6 +4099,7 @@ packages: /import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: false /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}