diff --git a/packages/uni-app-vite/src/plugins/renderjs.ts b/packages/uni-app-vite/src/plugins/renderjs.ts index ca328266bb83cfed86469eda0248038e6ee91068..fd831202b0613e06f6d0d5681b031f7aab3dc04e 100644 --- a/packages/uni-app-vite/src/plugins/renderjs.ts +++ b/packages/uni-app-vite/src/plugins/renderjs.ts @@ -30,7 +30,7 @@ export function uniRenderjsPlugin(): Plugin { renderjsModulesCache.set(resolvedConfig, new Map()) }, async transform(code, id) { - const { type, name } = parseRenderjs(id) + const { type, name, filename } = parseRenderjs(id) if (!type) { return } @@ -44,19 +44,23 @@ export function uniRenderjsPlugin(): Plugin { const moduleHashId = hash(modulePath) const globalName = type === 'wxs' ? WXS_MODULES : RENDERJS_MODULES const { isProduction } = resolvedConfig - const res = + const resultCode = normalizeCode( type === 'wxs' ? await transformWxs( code, + filename, `__${globalName}['${moduleHashId}']`, isProduction ) : await transformRenderjs( code, + filename, `__${globalName}['${moduleHashId}']`, isProduction - ) - const resultCode = normalizeCode(res.code, globalName, isProduction) + ), + globalName, + isProduction + ) if (type === 'wxs') { wxsModulesCache.get(resolvedConfig)!.set(moduleHashId, resultCode) } else { @@ -110,22 +114,42 @@ function normalizeCode( ) } -function transformWxs(code: string, globalName: string, isProduction: boolean) { - return transformWithEsbuild(code, { +function transformWxs( + code: string, + filename: string, + globalName: string, + isProduction: boolean +) { + return transformWithEsbuild(code, filename, { format: 'iife', globalName, minify: isProduction ? true : false, + bundle: true, + write: false, + }).then((res) => { + if (res.outputFiles) { + return res.outputFiles[0].text + } + return '' }) } function transformRenderjs( code: string, + filename: string, globalName: string, isProduction: boolean ) { - return transformWithEsbuild(code, { + return transformWithEsbuild(code, filename, { format: 'iife', globalName, minify: isProduction ? true : false, + bundle: true, + write: false, + }).then((res) => { + if (res.outputFiles) { + return res.outputFiles[0].text + } + return '' }) } diff --git a/packages/uni-cli-shared/src/esbuild.ts b/packages/uni-cli-shared/src/esbuild.ts index 3ac9214cfb42843d4f3e482618e5cc29ff683030..6041aaf37adb2be8aa8d8a03db260d7522b94be1 100644 --- a/packages/uni-cli-shared/src/esbuild.ts +++ b/packages/uni-cli-shared/src/esbuild.ts @@ -1,7 +1,16 @@ -import { TransformOptions } from 'esbuild' +import { BuildOptions } from 'esbuild' +import path from 'path' -export function transformWithEsbuild(code: string, options: TransformOptions) { +export function transformWithEsbuild( + code: string, + filename: string, + options: BuildOptions +) { + options.stdin = { + contents: code, + resolveDir: path.dirname(filename), + } return import('esbuild').then((esbuild) => { - return esbuild.transform(code, options) + return esbuild.build(options) }) }