From 63961e4009264d73763bea402728509e82bf0c13 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Wed, 10 Aug 2022 15:06:49 +0200 Subject: [PATCH] fix(rollup): fix stub export resolution issues --- package.json | 2 +- pnpm-lock.yaml | 15 ++++++++++----- src/builder/rollup.ts | 15 ++++++++++----- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 1ff3ac3..b9762c1 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "magic-string": "^0.26.2", "mkdirp": "^1.0.4", "mkdist": "^0.3.13", - "mlly": "^0.5.8", + "mlly": "^0.5.9", "mri": "^1.2.0", "pathe": "^0.3.3", "pkg-types": "^0.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ade185f..fdd4683 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,7 +23,7 @@ specifiers: magic-string: ^0.26.2 mkdirp: ^1.0.4 mkdist: ^0.3.13 - mlly: ^0.5.8 + mlly: ^0.5.9 mri: ^1.2.0 pathe: ^0.3.3 pkg-types: ^0.3.3 @@ -54,7 +54,7 @@ dependencies: magic-string: 0.26.2 mkdirp: 1.0.4 mkdist: 0.3.13_typescript@4.7.4 - mlly: 0.5.8 + mlly: 0.5.9 mri: 1.2.0 pathe: 0.3.3 pkg-types: 0.3.3 @@ -2937,12 +2937,13 @@ packages: typescript: 4.7.4 dev: false - /mlly/0.5.8: - resolution: {integrity: sha512-WRmpgVQ8dQTkmVsG1rvbwNOVUkIYsoFxzzjjPSmeVEci14nNin50bTRw/Ikp0X0cVdsIVjMR/iT6Pp9rVtmDDg==} + /mlly/0.5.9: + resolution: {integrity: sha512-OsbZUJVn5Z79gEEALFpSKjk99AZdXaNG8zaJvpKFtMXcjYASIQX34yVJwIXMwOYM8yVOqhL4tPgtKaHI8s5tLA==} dependencies: acorn: 8.8.0 pathe: 0.3.3 pkg-types: 0.3.3 + ufo: 0.8.5 dev: false /modify-values/1.0.1: @@ -3204,7 +3205,7 @@ packages: resolution: {integrity: sha512-6AJcCMnjUQPQv/Wk960w0TOmjhdjbeaQJoSKWRQv9N3rgkessCu6J0Ydsog/nw1MbpnxHuPzYbfOn2KmlZO1FA==} dependencies: jsonc-parser: 3.0.0 - mlly: 0.5.8 + mlly: 0.5.9 pathe: 0.3.3 dev: false @@ -3755,6 +3756,10 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /ufo/0.8.5: + resolution: {integrity: sha512-e4+UtA5IRO+ha6hYklwj6r7BjiGMxS0O+UaSg9HbaTefg4kMkzj4tXzEBajRR+wkxf+golgAWKzLbytCUDMJAA==} + dev: false + /uglify-js/3.15.3: resolution: {integrity: sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==} engines: {node: '>=0.8.0'} diff --git a/src/builder/rollup.ts b/src/builder/rollup.ts index 9d8cc8a..23f69c7 100644 --- a/src/builder/rollup.ts +++ b/src/builder/rollup.ts @@ -21,6 +21,8 @@ import { shebangPlugin, makeExecutable, getShebang } from './plugins/shebang' // @ts-ignore https://github.com/unjs/unbuild/issues/23 const esbuild = _esbuild.default || _esbuild +const DEFAULT_EXTENSIONS = ['.ts', '.tsx', '.mjs', '.cjs', '.js', '.jsx', '.json'] + export async function rollupBuild (ctx: BuildContext) { if (ctx.options.stub) { const jitiPath = await resolvePath('jiti', { url: import.meta.url }) @@ -41,7 +43,12 @@ export async function rollupBuild (ctx: BuildContext) { // MJS Stub // Try to analyze exports - const namedExports = await resolveModuleExportNames(resolvedEntry) + const namedExports = await resolveModuleExportNames(resolvedEntry, { + extensions: DEFAULT_EXTENSIONS + }).catch((err) => { + warn(ctx, `Cannot analyze ${resolvedEntry} for exports:` + err) + return [] + }) await writeFile(output + '.mjs', `${shebang}import jiti from ${JSON.stringify(pathToFileURL(jitiPath).href)};\nconst _module = jiti(null, { interopDefault: true, esmResolve: true })('${resolvedEntry}');\n\nexport default _module;\n\n${namedExports.map(name => `export const ${name} = _module.${name};`).join('\n')}`) // DTS Stub @@ -103,8 +110,6 @@ export async function rollupBuild (ctx: BuildContext) { } export function getRollupOptions (ctx: BuildContext): RollupOptions { - const extensions = ['.ts', '.tsx', '.mjs', '.cjs', '.js', '.jsx', '.json'] - return { context: ctx.options.rootDir, @@ -176,7 +181,7 @@ export function getRollupOptions (ctx: BuildContext): RollupOptions { }), ctx.options.rollup.resolve && nodeResolve({ - extensions, + extensions: DEFAULT_EXTENSIONS, ...ctx.options.rollup.resolve }), @@ -191,7 +196,7 @@ export function getRollupOptions (ctx: BuildContext): RollupOptions { }), ctx.options.rollup.commonjs && commonjs({ - extensions, + extensions: DEFAULT_EXTENSIONS, ...ctx.options.rollup.commonjs }),