diff --git a/src/builders/rollup/config.ts b/src/builders/rollup/config.ts index 582f4d9..f4bcf48 100644 --- a/src/builders/rollup/config.ts +++ b/src/builders/rollup/config.ts @@ -15,7 +15,9 @@ import { cjsPlugin } from "./plugins/cjs"; import { shebangPlugin } from "./plugins/shebang"; import { DEFAULT_EXTENSIONS, getChunkFilename, resolveAliases } from "./utils"; -export async function getRollupOptions(ctx: BuildContext): Promise { +export async function getRollupOptions( + ctx: BuildContext, +): Promise { const _aliases = await resolveAliases(ctx); return ({ input: Object.fromEntries( diff --git a/src/builders/rollup/stub.ts b/src/builders/rollup/stub.ts index b38a058..876c4af 100644 --- a/src/builders/rollup/stub.ts +++ b/src/builders/rollup/stub.ts @@ -15,7 +15,7 @@ export async function rollupStub(ctx: BuildContext): Promise { { ...ctx.options.stubOptions.jiti, alias: { - ...await resolveAliases(ctx), + ...(await resolveAliases(ctx)), ...ctx.options.stubOptions.jiti.alias, }, transformOptions: { diff --git a/src/builders/rollup/utils.ts b/src/builders/rollup/utils.ts index e08d9ee..fc9ec10 100644 --- a/src/builders/rollup/utils.ts +++ b/src/builders/rollup/utils.ts @@ -1,4 +1,4 @@ -import { dirname, resolve } from 'pathe' +import { dirname, resolve } from "pathe"; import type { PreRenderedChunk } from "rollup"; import type { BuildContext } from "../../types"; @@ -14,7 +14,9 @@ export const DEFAULT_EXTENSIONS: string[] = [ ".json", ]; -export async function resolveAliases(ctx: BuildContext): Promise> { +export async function resolveAliases( + ctx: BuildContext, +): Promise> { const aliases: Record = { [ctx.pkg.name!]: ctx.options.rootDir, ...ctx.options.alias, @@ -42,52 +44,65 @@ export async function resolveAliases(ctx: BuildContext): Promise | null> { - const ts = await import('typescript').catch(() => null) +async function tryInferTsconfigAliases(): Promise | null> { + const ts = await import("typescript").catch(() => null); - if(!ts) { - return null + if (!ts) { + return null; } - const tsconfigPath = ts.findConfigFile(process.cwd(), ts.sys.fileExists, 'tsconfig.json') + const tsconfigPath = ts.findConfigFile( + process.cwd(), + ts.sys.fileExists, + "tsconfig.json", + ); - if(!tsconfigPath) { - return null + if (!tsconfigPath) { + return null; } - const tsconfigDir = dirname(tsconfigPath) - const { config: rawTsconfig } = ts.readConfigFile(tsconfigPath, ts.sys.readFile) - const { options: tsconfig } = ts.parseJsonConfigFileContent(rawTsconfig, ts.sys, tsconfigDir) + const tsconfigDir = dirname(tsconfigPath); + const { config: rawTsconfig } = ts.readConfigFile( + tsconfigPath, + ts.sys.readFile, + ); + const { options: tsconfig } = ts.parseJsonConfigFileContent( + rawTsconfig, + ts.sys, + tsconfigDir, + ); - if(!tsconfig.paths) { - return null + if (!tsconfig.paths) { + return null; } - const resolvedBaseUrl = resolve(tsconfigDir, tsconfig.baseUrl || '.'); + const resolvedBaseUrl = resolve(tsconfigDir, tsconfig.baseUrl || "."); const aliases = Object.fromEntries( - Object.entries(tsconfig.paths) - .map(([pattern, substitutions]) => { - const find = pattern.replace(/\/\*$/, '') - // Pick only the first path. - const replacement = substitutions[0].replace(/\*$/, '') - const resolvedReplacement = resolve(resolvedBaseUrl, replacement) - return [find, resolvedReplacement] - }) - ) + Object.entries(tsconfig.paths).map(([pattern, substitutions]) => { + const find = pattern.replace(/\/\*$/, ""); + // Pick only the first path. + const replacement = substitutions[0].replace(/\*$/, ""); + const resolvedReplacement = resolve(resolvedBaseUrl, replacement); + return [find, resolvedReplacement]; + }), + ); - return aliases + return aliases; } export function getChunkFilename(