diff --git a/packages/uni-cli-shared/src/constants.ts b/packages/uni-cli-shared/src/constants.ts index 881c7077e35a5517f08f8c8ebf1f6960976e848f..4a382346dda3c3234196a72e3211170fe40de8ce 100644 --- a/packages/uni-cli-shared/src/constants.ts +++ b/packages/uni-cli-shared/src/constants.ts @@ -1,7 +1,8 @@ export const PUBLIC_DIR = 'static' -export const EXTNAME_JS = ['.js', '.ts'] +export const EXTNAME_JS = ['.js', '.ts', '.jsx', '.tsx'] export const EXTNAME_VUE = ['.vue', '.nvue'] export const EXTNAME_VUE_RE = /\.(vue|nvue)$/ +export const EXTNAME_JS_RE = /\.[jt]sx?$/ // APP 平台解析页面后缀的优先级 export const PAGE_EXTNAME_APP = ['.nvue', '.vue'] diff --git a/packages/uni-cli-shared/src/vite/plugins/inject.ts b/packages/uni-cli-shared/src/vite/plugins/inject.ts index 06e8d4323c9d6fdabb9c3650cf1296df6196fff2..344a5aa449ed7e4164ac0ca4ab4bd298206e8611 100644 --- a/packages/uni-cli-shared/src/vite/plugins/inject.ts +++ b/packages/uni-cli-shared/src/vite/plugins/inject.ts @@ -16,7 +16,7 @@ import { walk } from 'estree-walker' import { extend } from '@vue/shared' import { MagicString } from '@vue/compiler-sfc' -import { EXTNAME_JS, EXTNAME_VUE } from '../../constants' +import { EXTNAME_JS_RE, EXTNAME_VUE } from '../../constants' import { isProperty, @@ -73,16 +73,20 @@ export function uniViteInjectPlugin(options: InjectOptions): Plugin { `(?:${Array.from(modulesMap.keys()).map(escape).join('|')})`, 'g' ) - const EXTNAMES = EXTNAME_JS.concat(EXTNAME_VUE) const sourceMap = options.sourceMap !== false const callback = options.callback return { name: 'vite:uni-inject', transform(code, id) { if (!filter(id)) return null - const { filename, query } = parseVueRequest(id) - if (query.vue || !EXTNAMES.includes(path.extname(filename))) { - return null + const isJs = EXTNAME_JS_RE.test(id) + if (!isJs) { + const { filename, query } = parseVueRequest(id) + const isVueJs = + EXTNAME_VUE.includes(path.extname(filename)) && !query.vue + if (!isVueJs) { + return null + } } debugInjectTry(id) if (code.search(firstpass) === -1) return null