Support pnpm virtual store in Vite config (#463)

Export-Source-Commit: 559c8808b397a4f54dc95e0ca7f746ee14d67e78
This commit is contained in:
Ryan Clark
2026-08-25 11:35:10 -05:00
committed by Gus Rivera
parent c4e400a7ed
commit 14128e5aac
+37 -1
View File
@@ -19,7 +19,7 @@
import { existsSync, readFileSync } from 'fs';
import { Agent as HttpsAgent, type RequestOptions } from 'https';
import { isIP } from 'net';
import { resolve } from 'path';
import { isAbsolute, relative, resolve } from 'path';
import type { Duplex } from 'stream';
import { visualizer } from 'rollup-plugin-visualizer';
@@ -165,6 +165,12 @@ export function createViteConfig(
config.server.fs.allow.push(designSystemPath);
}
const virtualStoreDirectory = resolveVirtualStoreDir(rootDirectory);
if (virtualStoreDirectory) {
config.server.fs.allow.push(virtualStoreDirectory);
}
if (process.env.VITE_ANALYZE_BUNDLE) {
config.plugins.push(visualizer());
}
@@ -240,6 +246,36 @@ export function createViteConfig(
});
}
function resolveVirtualStoreDir(rootDirectory: string) {
const modulesDirectory = resolve(rootDirectory, 'node_modules');
const manifestPath = resolve(modulesDirectory, '.modules.yaml');
if (!existsSync(manifestPath)) {
return;
}
let virtualStoreDir: unknown;
try {
({ virtualStoreDir } = JSON.parse(readFileSync(manifestPath, 'utf-8')));
} catch {
return;
}
if (typeof virtualStoreDir !== 'string') {
return;
}
const absolutePath = resolve(modulesDirectory, virtualStoreDir);
const relativePath = relative(rootDirectory, absolutePath);
if (!relativePath.startsWith('..') && !isAbsolute(relativePath)) {
return;
}
return absolutePath;
}
function resolveAllowedHosts(target: string) {
const allowedHosts = new Set<string>();