From 06f3bebddde8b3056c42edab8b12875e5115b5f7 Mon Sep 17 00:00:00 2001 From: shichao <834466168@qq.com> Date: Fri, 3 Jan 2025 09:05:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20vite-plugin-dynamic-import=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0mappingPath=E6=96=B9=E6=B3=95=E5=AF=BC?= =?UTF-8?q?=E8=87=B4alias=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dynamic-require.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dynamic-require.ts b/src/dynamic-require.ts index 3f3bb20..ba78399 100644 --- a/src/dynamic-require.ts +++ b/src/dynamic-require.ts @@ -225,8 +225,11 @@ export class DynamicRequire { // TODO: execute the Options.onFiles if (!files.length) continue - - const maps = mappingPath(files, resolved) + const mapAlias = resolved + ? { [resolved.alias.relative]: resolved.alias.findString } + : undefined + // @ts-ignore + const maps = mappingPath(files, mapAlias) const runtimeFnName = `__matchRequireRuntime${counter}__` let counter2 = 0 const cases: string[] = [] From 96d128e336a8b92a1caada0af63094c8a5a308e7 Mon Sep 17 00:00:00 2001 From: shichao <834466168@qq.com> Date: Fri, 3 Jan 2025 09:06:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BD=93vue=E4=B8=AD?= =?UTF-8?q?=E5=90=AB=E6=9C=89require=E6=97=A0=E6=B3=95=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98,=20=E4=BD=BF=E7=94=A8vite=E7=9A=84c?= =?UTF-8?q?reateFilter=E6=96=B9=E5=BC=8F=E8=BF=9B=E8=A1=8C=E5=88=A4?= =?UTF-8?q?=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 6768649..6199bc5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,7 @@ import path from 'path' import { + createFilter, + FilterPattern, type Plugin, type ResolvedConfig, } from 'vite' @@ -15,8 +17,9 @@ import { analyze } from './analyze' import { DynamicRequire } from './dynamic-require' export interface Options { - extensions?: string[] - filter?: (id: string) => false | void + extensions?: string[], + include?: FilterPattern; + exclude?: FilterPattern; dynamic?: { /** * 1. `true` - Match all possibilities as much as possible, More like `webpack` @@ -35,6 +38,7 @@ export function viteRequire(options: Options = {}): Plugin { let config: ResolvedConfig let dynamicRequire: DynamicRequire + const filter = createFilter(options.include || /\.([jt]sx?)$/, options.exclude) return { name: 'vite-require', configResolved(_config) { @@ -48,7 +52,7 @@ export function viteRequire(options: Options = {}): Plugin { if (/node_modules\/(?!\.vite\/)/.test(pureId)) return if (!extensions.includes(path.extname(pureId))) return if (!isCommonjs(code)) return - if (options.filter?.(pureId) === false) return + if (!filter(id) || !filter(pureId)) return const ast = this.parse(code) const analyzed = analyze(ast, code)