diff --git a/compiler/main.js b/compiler/main.js index 1d9f5fc..dbb05f4 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -380,7 +380,6 @@ function loadModuleInfo(projectConfig, envArgs) { projectConfig.modulePathMap = buildJsonInfo.modulePathMap; projectConfig.isOhosTest = buildJsonInfo.isOhosTest; projectConfig.processTs = false; - projectConfig.processMergeabc = false; projectConfig.buildArkMode = envArgs.buildMode; if (buildJsonInfo.compileMode === 'esmodule') { projectConfig.nodeModulesPath = buildJsonInfo.nodeModulesPath; diff --git a/compiler/src/gen_abc_plugin.ts b/compiler/src/gen_abc_plugin.ts index f118c9c..5f3f511 100644 --- a/compiler/src/gen_abc_plugin.ts +++ b/compiler/src/gen_abc_plugin.ts @@ -148,14 +148,12 @@ export class GenAbcPlugin { } // case ESMODULE - // | --- merge -- debug -- not removeDir - // | --- merge -- release -- removeDir - // | --- unmerge -- removeDir - if (projectConfig.compileMode === ESMODULE) { - if (!projectConfig.processMergeabc || projectConfig.buildArkMode !== 'debug') { - removeDir(output); - removeDir(projectConfig.nodeModulesPath); - } + // | --- es2abc -- debug -- not removeDir + // | --- es2abc -- release -- removeDir + // | --- ts2abc -- removeDir + if (projectConfig.compileMode === ESMODULE && ((projectConfig.buildArkMode !== 'debug' && process.env.panda === ES2ABC) || process.env.panda === TS2ABC)) { + removeDir(output); + removeDir(projectConfig.nodeModulesPath); } compiler.hooks.compilation.tap('GenAbcPlugin', (compilation) => { @@ -351,7 +349,11 @@ function eliminateUnusedFiles(moduleList: Array): void{ let cachedModuleList: Array = getCachedModuleList(); if (cachedModuleList.length !== 0) { const eliminateFiles: Array = cachedModuleList.filter(m => !moduleList.includes(m)); - eliminateFiles.forEach((file) => {fs.unlinkSync(file);}); + eliminateFiles.forEach((file) => { + if (fs.existsSync(file)) { + fs.unlinkSync(file); + } + }); } } @@ -382,7 +384,7 @@ function handleFinishModules(modules, callback): any { } }); - if (projectConfig.processMergeabc) { + if (projectConfig.compileMode === ESMODULE && process.env.panda !== TS2ABC) { if (projectConfig.buildArkMode === 'debug') { eliminateUnusedFiles(buildMapFileList); updateCachedModuleList(buildMapFileList); @@ -518,7 +520,7 @@ export function initAbcEnv() : string[] { if (isDebug) { args.push('--debug-info'); } - if (projectConfig.processMergeabc) { + if (projectConfig.compileMode === ESMODULE) { args.push('--merge-abc'); } } else { diff --git a/compiler/src/gen_merged_abc.ts b/compiler/src/gen_merged_abc.ts index 974eb3a..cee7540 100644 --- a/compiler/src/gen_merged_abc.ts +++ b/compiler/src/gen_merged_abc.ts @@ -35,6 +35,17 @@ const red: string = '\u001b[31m'; const reset: string = '\u001b[39m'; function generateCompileFilesInfo(moduleInfos: Array) { + const tempModuleInfos = Array(); + moduleInfos.forEach((item) => { + const check = tempModuleInfos.every((newItem) => { + return item.tempFilePath !== newItem.tempFilePath; + }); + if (check) { + tempModuleInfos.push(item); + } + }); + moduleInfos = tempModuleInfos; + const filesInfoPath: string = path.join(process.env.cachePath, FILESINFO_TXT); let filesInfo: string = ''; moduleInfos.forEach(info => {