Skip to content

Commit fac52a4

Browse files
authored
fix: crawl local workspace private packages devDependencies (#1155)
* fix: crawl local workspace private packages devDependencies for generating vite config ssr.noExternal * add testcase with nested workspace devdep * try to work around windows workspace ref issues * fix: bump vitefu to consume windows fix
1 parent 8051ecf commit fac52a4

File tree

9 files changed

+95
-7
lines changed

9 files changed

+95
-7
lines changed

.changeset/old-peaches-refuse.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/vite-plugin-svelte': patch
3+
---
4+
5+
fix: crawl local workspace private packages devDependencies for generating vite config ssr.noExternal
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"version": "1.0.0",
3+
"private": true,
4+
"name": "e2e-test-dep-svelte-nested-workspace-devdep",
5+
"svelte": "src/index.js",
6+
"main": "src/index.js",
7+
"type": "module",
8+
"files": [
9+
"src"
10+
],
11+
"exports": {
12+
"./package.json": "./package.json",
13+
".": {
14+
"import": {
15+
"svelte": "./src/index.js"
16+
}
17+
}
18+
},
19+
"devDependencies": {
20+
"e2e-test-dep-svelte-simple": "file:../svelte-simple",
21+
"e2e-test-dep-cjs-and-esm": "file:../cjs-and-esm",
22+
"e2e-test-dep-scss-only": "file:../scss-only"
23+
}
24+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script>
2+
export let id = 'id';
3+
export let message = '';
4+
import { cjs_and_esm } from 'e2e-test-dep-cjs-and-esm';
5+
import 'e2e-test-dep-scss-only';
6+
</script>
7+
8+
<div {id}>{message}</div>
9+
<div id="cjs-and-esm">{cjs_and_esm()}</div>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import Message from './components/Message.svelte';
2+
export { Message };

packages/e2e-tests/kit-node/__tests__/kit.spec.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,10 @@ describe('kit-node', () => {
292292
'cli-color',
293293
'tiny-glob',
294294
'cookie',
295-
'set-cookie-parser'
295+
'set-cookie-parser',
296+
'e2e-test-dep-cjs-and-esm',
297+
'e2e-test-dep-cjs-only',
298+
'e2e-test-dep-scss-only'
296299
]
297300
: [],
298301
`ssr.external in ${filename}`
@@ -307,13 +310,22 @@ describe('kit-node', () => {
307310
'esm-env', // first added by svelte-kit
308311
'esm-env', // second added by vite-plugin-svelte
309312
'@sveltejs/kit',
310-
'@sveltejs/adapter-node'
313+
'@sveltejs/adapter-node',
314+
'e2e-test-dep-svelte-nested-workspace-devdep',
315+
'e2e-test-dep-svelte-simple'
311316
],
312317
`ssr.noExternal in ${filename}`
313318
);
319+
const expectedExcludes = ['@sveltejs/kit', '$app', '$env'];
320+
if (!isServe) {
321+
expectedExcludes.push(
322+
'e2e-test-dep-svelte-nested-workspace-devdep',
323+
'e2e-test-dep-svelte-simple'
324+
);
325+
}
314326
expectArrayEqual(
315327
config.optimizeDeps.exclude,
316-
['@sveltejs/kit', '$app', '$env'],
328+
expectedExcludes,
317329
`optimizeDeps.exclude in ${filename}`
318330
);
319331
let expectedIncludes = [
@@ -345,6 +357,12 @@ describe('kit-node', () => {
345357
(item) => !(isServe && item.startsWith('svelte-i18n >'))
346358
);
347359

360+
if (!isServe) {
361+
expectedIncludes.push(
362+
'e2e-test-dep-svelte-nested-workspace-devdep > e2e-test-dep-svelte-simple > e2e-test-dep-cjs-only'
363+
);
364+
}
365+
348366
expectArrayEqual(
349367
config.optimizeDeps.include,
350368
expectedIncludes,

packages/e2e-tests/kit-node/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"@sveltejs/vite-plugin-svelte": "workspace:^",
1818
"e2e-test-dep-svelte-api-only": "file:../_test_dependencies/svelte-api-only",
1919
"e2e-test-dep-vite-plugins": "file:../_test_dependencies/vite-plugins",
20+
"e2e-test-dep-svelte-nested-workspace-devdep": "../_test_dependencies/svelte-nested-workspace-devdep",
2021
"svelte": "^5.34.9",
2122
"svelte-check": "^4.2.2",
2223
"svelte-i18n": "^4.0.1",

packages/vite-plugin-svelte/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"deepmerge": "^4.3.1",
4545
"kleur": "^4.1.5",
4646
"magic-string": "^0.30.17",
47-
"vitefu": "^1.0.7"
47+
"vitefu": "^1.1.1"
4848
},
4949
"peerDependencies": {
5050
"svelte": "^5.0.0",

packages/vite-plugin-svelte/src/utils/options.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const {
55
defaultServerMainFields,
66
defaultClientConditions,
77
defaultServerConditions,
8-
normalizePath
8+
normalizePath,
9+
searchForWorkspaceRoot
910
} = vite;
1011
import { log } from './log.js';
1112
import { loadSvelteConfig } from './load-svelte-config.js';
@@ -429,6 +430,7 @@ async function buildExtraConfigForDependencies(options, config) {
429430
const packagesWithoutSvelteExportsCondition = new Set();
430431
const depsConfig = await crawlFrameworkPkgs({
431432
root: options.root,
433+
workspaceRoot: searchForWorkspaceRoot(options.root),
432434
isBuild: options.isBuild,
433435
viteUserConfig: config,
434436
isFrameworkPkgByJson(pkgJson) {

pnpm-lock.yaml

Lines changed: 29 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)