From 4a3b76c75a064a3669943c1ff1510d7a942f1621 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 11 Jan 2025 18:01:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(uts):=20=E4=BF=AE=E5=A4=8D=20uts=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=B8=89=E6=96=B9=E4=BE=9D=E8=B5=96=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=8F=98=E6=9B=B4=E4=B8=8D=E8=A7=A6=E5=8F=91=E7=BC=96?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/vite/plugins/uts/uni_modules.ts | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/packages/uni-cli-shared/src/vite/plugins/uts/uni_modules.ts b/packages/uni-cli-shared/src/vite/plugins/uts/uni_modules.ts index 763f1b4690d..4c2871513e6 100644 --- a/packages/uni-cli-shared/src/vite/plugins/uts/uni_modules.ts +++ b/packages/uni-cli-shared/src/vite/plugins/uts/uni_modules.ts @@ -3,8 +3,11 @@ import fs from 'fs-extra' import path from 'path' import { once } from '@dcloudio/uni-shared' import { dataToEsm } from '@rollup/pluginutils' -import type { ChangeEvent } from 'rollup' -import type { SyncUniModulesFilePreprocessor } from '@dcloudio/uni-uts-v1' +import type { ChangeEvent, PluginContext } from 'rollup' +import type { + CompileResult, + SyncUniModulesFilePreprocessor, +} from '@dcloudio/uni-uts-v1' import { genUniExtApiDeclarationFileOnce, initUTSKotlinAutoImportsOnce, @@ -170,15 +173,7 @@ const createUniXAppHarmonyUniModulesSyncFilePreprocessorOnce = once(() => { return createUniModulesSyncFilePreprocessor('app', 'app-harmony', true) }) -const utsModuleCaches = new Map< - string, - () => Promise ->() +const utsModuleCaches = new Map Promise>() interface UniUTSPluginOptions { x?: boolean @@ -227,6 +222,17 @@ const emptyHarmonyCacheDirOnce = once(() => { emptyCacheDir('app-harmony') }) +const handleCompileResult = ( + result: CompileResult, + pluginContext?: PluginContext +) => { + if (pluginContext) { + result.deps.forEach((dep) => { + pluginContext.addWatchFile(dep) + }) + } +} + // 该插件仅限app-android、app-ios、app-harmony export function uniUTSAppUniModulesPlugin( options: UniUTSPluginOptions = {} @@ -314,7 +320,10 @@ export function uniUTSAppUniModulesPlugin( }[] >() - const compilePlugin = async (pluginDir: string) => { + const compilePlugin = async ( + pluginDir: string, + pluginContext?: PluginContext + ) => { const pluginId = path.basename(pluginDir) if (uniXKotlinCompiler) { @@ -424,9 +433,20 @@ export function uniUTSAppUniModulesPlugin( // 本次编译流程中已编译过该插件,直接使用缓存 const depPluginDir = normalizePath(path.resolve(uniModulesDir, dep)) if (utsModuleCaches.get(depPluginDir)) { - await utsModuleCaches.get(depPluginDir)!() + await utsModuleCaches.get(depPluginDir)!().then((result) => { + if (result) { + handleCompileResult(result, pluginContext) + } + }) } else { - await compilePlugin(path.resolve(inputDir, 'uni_modules', dep)) + await compilePlugin( + path.resolve(inputDir, 'uni_modules', dep), + pluginContext + ).then((result) => { + if (result) { + handleCompileResult(result, pluginContext) + } + }) } } } @@ -635,7 +655,7 @@ export function uniUTSAppUniModulesPlugin( }) } const compile = once(() => { - return compilePlugin(pluginDir) + return compilePlugin(pluginDir, this) }) utsModuleCaches.set(pluginDir, compile) const result = await compile()