Skip to content

Commit 9539daa

Browse files
authored
chore: anticipate vite cache changes (#278)
1 parent 3107bf0 commit 9539daa

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

packages/e2e-tests/package-json-svelte-field/__tests__/package-json-svelte-field.spec.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ test('should render component imported via svelte field in package.json', async
88

99
if (!isBuild) {
1010
test('should optimize nested cjs deps of excluded svelte deps', () => {
11-
const vitePrebundleMetadata = path.resolve(__dirname, '../node_modules/.vite/_metadata.json');
12-
const metadataFile = fs.readFileSync(vitePrebundleMetadata, 'utf8');
11+
const metadataFile = readVitePrebundleMetadata();
1312
const metadata = JSON.parse(metadataFile);
1413
const optimizedPaths = Object.keys(metadata.optimized);
1514
expect(optimizedPaths).not.toContain('e2e-test-dep-svelte-nested');
@@ -19,3 +18,20 @@ if (!isBuild) {
1918
);
2019
});
2120
}
21+
22+
function readVitePrebundleMetadata() {
23+
const metadataPaths = [
24+
'../node_modules/.vite/_metadata.json',
25+
'../node_modules/.vite/deps/_metadata.json' // vite 2.9
26+
];
27+
for (const metadataPath of metadataPaths) {
28+
try {
29+
const vitePrebundleMetadata = path.resolve(__dirname, metadataPath);
30+
const metadataFile = fs.readFileSync(vitePrebundleMetadata, 'utf8');
31+
return metadataFile;
32+
} catch {
33+
// ignore
34+
}
35+
}
36+
throw new Error('Unable to find vite prebundle metadata');
37+
}

packages/vite-plugin-svelte/src/utils/optimizer.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@ const PREBUNDLE_SENSITIVE_OPTIONS: (keyof ResolvedOptions)[] = [
1616
export async function handleOptimizeDeps(options: ResolvedOptions, viteConfig: ResolvedConfig) {
1717
if (!options.experimental.prebundleSvelteLibraries || !viteConfig.cacheDir) return;
1818

19-
const viteMetadataPath = path.resolve(viteConfig.cacheDir, '_metadata.json');
19+
const viteMetadataPath = findViteMetadataPath(viteConfig.cacheDir);
20+
if (!viteMetadataPath) return;
2021

21-
if (!fs.existsSync(viteMetadataPath)) return;
22-
23-
const svelteMetadataPath = path.resolve(viteConfig.cacheDir, '_svelte_metadata.json');
22+
const svelteMetadataPath = path.resolve(viteMetadataPath, '../_svelte_metadata.json');
2423
const currentSvelteMetadata = JSON.stringify(generateSvelteMetadata(options), (_, value) => {
2524
return typeof value === 'function' ? value.toString() : value;
2625
});
@@ -41,3 +40,11 @@ function generateSvelteMetadata(options: ResolvedOptions) {
4140
}
4241
return metadata;
4342
}
43+
44+
function findViteMetadataPath(cacheDir: string) {
45+
const metadataPaths = ['_metadata.json', 'deps/_metadata.json'];
46+
for (const metadataPath of metadataPaths) {
47+
const viteMetadataPath = path.resolve(cacheDir, metadataPath);
48+
if (fs.existsSync(viteMetadataPath)) return viteMetadataPath;
49+
}
50+
}

0 commit comments

Comments
 (0)