diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index 7498be338d1bc3..d101a87cc1262b 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -457,7 +457,7 @@ export function tryNodeResolve( // nested node module, step-by-step resolve to the basedir of the nestedPath if (nestedRoot) { - basedir = nestedResolveFrom(nestedRoot, basedir) + basedir = nestedResolveFrom(nestedRoot, basedir, preserveSymlinks) } const pkg = resolvePackageData(pkgId, basedir, preserveSymlinks) diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index ac0fdb2c4d63d8..9c8be23b590f58 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -68,11 +68,15 @@ export function resolveFrom( * like `resolveFrom` but supports resolving `>` path in `id`, * for example: `foo > bar > baz` */ -export function nestedResolveFrom(id: string, basedir: string): string { +export function nestedResolveFrom( + id: string, + basedir: string, + preserveSymlinks = false +): string { const pkgs = id.split('>').map((pkg) => pkg.trim()) try { for (const pkg of pkgs) { - basedir = resolveFrom(pkg, basedir) + basedir = resolveFrom(pkg, basedir, preserveSymlinks) } } catch {} return basedir @@ -296,7 +300,9 @@ export function numberToPos( ): { line: number; column: number } { if (typeof offset !== 'number') return offset if (offset > source.length) { - throw new Error(`offset is longer than source length! offset ${offset} > length ${source.length}`); + throw new Error( + `offset is longer than source length! offset ${offset} > length ${source.length}` + ) } const lines = source.split(splitRE) let counted = 0