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 a5915c829e1f101fbf85f310db5f2d42f4891619..c8d6660705a21289963a949c25532d6d51406d3f 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 @@ -135,17 +135,23 @@ export class PreloadFileModules { } } - private static deduplicateByName(entries: T[]): T[] { + private static deduplicateByName(entries: T[]): T[] { const seenNames = new Set(); - return entries - .map(({ moduleId, ...rest }) => rest) - .filter(entry => { - if (seenNames.has(entry.name)) { - return false; - } - seenNames.add(entry.name); - return true; - }); + return entries.filter(entry => { + if (!this.reCheckNeedPreloadSo(entry.moduleId)) { + return false; + } + if (seenNames.has(entry.name)) { + return false; + } + seenNames.add(entry.name); + return true; + }).map(({ moduleId, ...rest }) => rest); + } + + private static reCheckNeedPreloadSo(moduleId: string): boolean { + const metaModuleInfo: Object = this.rollupObject.getModuleInfo(moduleId); + return metaModuleInfo?.meta?.needPreloadSo ? metaModuleInfo?.meta?.needPreloadSo : false; } private static rollupModuleIds(): string[] {