diff --git a/compiler/main.js b/compiler/main.js index 718439c..b612a82 100644 --- a/compiler/main.js +++ b/compiler/main.js @@ -65,13 +65,17 @@ function initProjectConfig(projectConfig) { projectConfig.cachePath = projectConfig.cachePath || process.env.cachePath || path.resolve(__dirname, 'node_modules/.cache'); projectConfig.aceSoPath = projectConfig.aceSoPath || process.env.aceSoPath; - projectConfig.outChangedFileList = (projectConfig.watchMode && projectConfig.watchMode.outChangedFileList) ? - projectConfig.watchMode.outChangedFileList : path.join(projectConfig.cachePath, 'changedFileList.json'); + projectConfig.outChangedFileList = getChangedFileList(projectConfig); projectConfig.xtsMode = /ets_loader_ark$/.test(__dirname); projectConfig.localPropertiesPath = projectConfig.localPropertiesPath || process.env.localPropertiesPath projectConfig.projectProfilePath = projectConfig.projectProfilePath || process.env.projectProfilePath } +function getChangedFileList(projectConfig) { + return (projectConfig.hotReloadWatch && projectConfig.hotReloadWatch.outChangedFileList) ? + projectConfig.hotReloadWatch.outChangedFileList : path.join(projectConfig.cachePath, 'changedFileList.json'); +} + function loadEntryObj(projectConfig) { let manifest = {}; initProjectConfig(projectConfig); diff --git a/compiler/src/compile_info.ts b/compiler/src/compile_info.ts index 3fd90c9..cd35eb3 100644 --- a/compiler/src/compile_info.ts +++ b/compiler/src/compile_info.ts @@ -35,11 +35,13 @@ import { import { circularFile, mkDir, + writeFileSync } from './utils'; import { MODULE_ETS_PATH, MODULE_SHARE_PATH, BUILD_SHARE_PATH, + ESMODULE } from './pre_define'; import { createLanguageService, @@ -224,20 +226,26 @@ export class ResultStates { }); compiler.hooks.watchRun.tap('WatchRun', (comp) => { - if (process.env.watchMode && projectConfig.outChangedFileList && (comp.modifiedFiles || comp.removedFiles) && - !(comp.modifiedFiles && [...comp.modifiedFiles].length === 1 && [...comp.modifiedFiles][0] == projectConfig.projectPath)) { - const filesObj = { + if (comp.modifiedFiles) { + const isTsAndEtsFile: boolean = [...comp.modifiedFiles].some((item: string) => { + return /.(ts|ets)$/.test(item); + }); + if (!isTsAndEtsFile) { + process.env.watchTs = 'end'; + } + } + if (this.shouldWriteChangedList(comp)) { + interface filesObj { + modifiedFiles: string[], + removedFiles: string[] + } + const filesObj: filesObj = { modifiedFiles: [...comp.modifiedFiles].filter((file) => { return fs.statSync(file).isFile(); }), removedFiles: [...comp.removedFiles] }; - if (fs.existsSync(path.dirname(projectConfig.outChangedFileList))) { - fs.writeFileSync(projectConfig.outChangedFileList, JSON.stringify(filesObj)); - } else { - fs.mkdirSync(path.dirname(projectConfig.outChangedFileList)); - fs.writeFileSync(projectConfig.outChangedFileList, JSON.stringify(filesObj)); - } + writeFileSync(projectConfig.outChangedFileList, JSON.stringify(filesObj)); } }) @@ -257,17 +265,13 @@ export class ResultStates { } this.printResult(); }); + } - compiler.hooks.watchRun.tap('Listening State', (compiler: Compiler) => { - if (compiler.modifiedFiles) { - const isTsAndEtsFile: boolean = [...compiler.modifiedFiles].some((item: string) => { - return /.(ts|ets)$/.test(item); - }); - if (!isTsAndEtsFile) { - process.env.watchTs = 'end'; - } - } - }); + private shouldWriteChangedList(comp): boolean { + return projectConfig.compileMode === ESMODULE && process.env.watchMode && !projectConfig.isPreview && + projectConfig.outChangedFileList && (comp.modifiedFiles || comp.removedFiles) && + !(comp.modifiedFiles && [...comp.modifiedFiles].length === 1 && + [...comp.modifiedFiles][0] == projectConfig.projectPath); } private printDiagnostic(diagnostic: ts.Diagnostic): void { diff --git a/compiler/webpack.config.js b/compiler/webpack.config.js index 9e3d360..3931740 100644 --- a/compiler/webpack.config.js +++ b/compiler/webpack.config.js @@ -200,7 +200,7 @@ function setProjectConfig(envArgs) { projectConfig.cachePath = envArgs.cachePath; } if (envArgs.watchMode) { - projectConfig.watchMode = envArgs.watchMode; + projectConfig.hotReloadWatch = envArgs.watchMode; } }