From d52ad45d933cf26ee8041d3b4712d535dedc15b3 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 14 Aug 2021 12:42:59 +0800 Subject: [PATCH] fix(h5): improve inject filter #2813 --- packages/uni-cli-shared/src/constants.ts | 3 ++- packages/uni-cli-shared/src/vite/plugins/inject.ts | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/uni-cli-shared/src/constants.ts b/packages/uni-cli-shared/src/constants.ts index 881c7077e..4a382346d 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 06e8d4323..344a5aa44 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 -- GitLab