diff --git a/src/rollup/plugins/externals.ts b/src/rollup/plugins/externals.ts index 1272346c7e..e8e42625b4 100644 --- a/src/rollup/plugins/externals.ts +++ b/src/rollup/plugins/externals.ts @@ -4,6 +4,7 @@ import { nodeFileTrace, NodeFileTraceOptions } from '@vercel/nft' import type { Plugin } from 'rollup' import { resolvePath, isValidNodeImport, normalizeid } from 'mlly' import semver from 'semver' +import { isDirectory } from '../../utils' export interface NodeExternalsOptions { inline?: string[] @@ -64,7 +65,7 @@ export function externals (opts: NodeExternalsOptions): Plugin { const resolved = await this.resolve(originalId, importer, { ...options, skipSelf: true }) || { id } // Try resolving with mlly as fallback - if (!existsSync(resolved.id)) { + if (!isAbsolute(resolved.id) || !existsSync(resolved.id) || await isDirectory(resolved.id)) { resolved.id = await _resolve(resolved.id).catch(() => resolved.id) } @@ -77,7 +78,7 @@ export function externals (opts: NodeExternalsOptions): Plugin { if (opts.trace === false) { return { ...resolved, - id: normalizeid(resolved.id), + id: isAbsolute(resolved.id) ? normalizeid(resolved.id) : resolved.id, external: true } }