mirror of
https://github.com/gravitational/teleport.git
synced 2026-10-12 02:15:01 +00:00
Support pnpm virtual store in Vite config (#463)
Export-Source-Commit: 559c8808b397a4f54dc95e0ca7f746ee14d67e78
This commit is contained in:
@@ -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>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user