diff --git a/compiler/src/fast_build/ark_compiler/module/module_preload_file_utils.ts b/compiler/src/fast_build/ark_compiler/module/module_preload_file_utils.ts index f0eeccab3ff544bd69178714edb16023658468f1..e682df4a446bfcab4644e6fbb21d04a8a5bdf9b6 100644 --- a/compiler/src/fast_build/ark_compiler/module/module_preload_file_utils.ts +++ b/compiler/src/fast_build/ark_compiler/module/module_preload_file_utils.ts @@ -24,6 +24,10 @@ import { ArkTSInternalErrorDescription, ErrorCode } from '../error_code'; +import { + isCommonJsPluginVirtualFile, + isCurrentProjectFiles +} from '../utils'; interface PreloadEntry { name: string; @@ -44,9 +48,10 @@ export class PreloadFileModules { private static preloadFilePathBack: string; private static projectConfig: Object; private static logger: CommonLogger; - private static moduleIds: string[] = []; + private static rollupObject: Object | undefined; public static initialize(rollupObject: Object): void { + this.rollupObject = rollupObject; this.projectConfig = Object.assign(rollupObject.share.arkProjectConfig, rollupObject.share.projectConfig); this.logger = CommonLogger.getInstance(rollupObject); if (!this.projectConfig.isPreloadSoEnabled) { @@ -106,7 +111,7 @@ export class PreloadFileModules { } const filtered = parsed.systemPreloadHintStartupTasks.filter( - entry => !this.moduleIds.includes(entry.moduleId) + entry => this.collectModuleIds().includes(entry.moduleId) ); const merged = [...this.preloadEntriesBack, ...filtered]; @@ -175,11 +180,17 @@ export class PreloadFileModules { } } - static collectModuleIds(moduleId: string): void { - if (!this.needPreloadSo) { - return; + private static collectModuleIds(): void { + const moduleIds: string[] = []; + const entryList = this.rollupObject.getModuleIds(); + for (const moduleId of entryList) { + // exclude .d.ts|.d.ets file + if (isCommonJsPluginVirtualFile(moduleId) || !isCurrentProjectFiles(moduleId, this.projectConfig)) { + continue; + } + moduleIds.push(moduleId); } - this.moduleIds.push(moduleId); + return moduleIds; } private static ensureDirectoryExistence(filePath: string): void { @@ -196,7 +207,7 @@ export class PreloadFileModules { this.preloadFilePathBack = ''; this.logger = undefined; this.projectConfig = undefined; - this.moduleIds = []; this.needPreloadSo = true; + this.rollupObject = undefined; } } \ No newline at end of file diff --git a/compiler/src/fast_build/ark_compiler/module/module_source_file.ts b/compiler/src/fast_build/ark_compiler/module/module_source_file.ts index f23c161d1b73482da6a4ebb18e249ef98730339d..b17b026dd9ee278104e83bdda38416e38579f184 100644 --- a/compiler/src/fast_build/ark_compiler/module/module_source_file.ts +++ b/compiler/src/fast_build/ark_compiler/module/module_source_file.ts @@ -82,7 +82,6 @@ import { getDeclgenBridgeCodePath, writeBridgeCodeFileSyncByNode } from '../interop/process_arkts_evolution'; -import { PreloadFileModules } from './module_preload_file_utils'; import { isMixCompile } from '../interop/interop_manager'; import { ARKTS_1_2 } from '../interop/pre_define'; @@ -373,7 +372,6 @@ export class ModuleSourceFile { if (!rollupObject.share.projectConfig.compileHar || ModuleSourceFile.projectConfig.byteCodeHar) { //compileHar: compile closed source har of project, which convert .ets to .d.ts and js, doesn't transform module request. const eventBuildModuleSourceFile = createAndStartEvent(parentEvent, 'build module source files'); - PreloadFileModules.collectModuleIds(moduleId); await moduleSourceFile.processModuleRequest(rollupObject, eventBuildModuleSourceFile); stopEvent(eventBuildModuleSourceFile); } @@ -413,7 +411,6 @@ export class ModuleSourceFile { if (!rollupObject.share.projectConfig.compileHar || byteCodeHar) { // compileHar: compile closed source har of project, which convert .ets to .d.ts and js, doesn't transform module request. const eventBuildModuleSourceFile = createAndStartEvent(parentEvent, 'build module source files'); - PreloadFileModules.collectModuleIds(source.getModuleId()); await source.processModuleRequest(rollupObject, eventBuildModuleSourceFile); stopEvent(eventBuildModuleSourceFile); }