From f3ac54bfd8f776c0af908f574c46732d7b3ca28b Mon Sep 17 00:00:00 2001 From: Caihuanyu Date: Mon, 11 May 2020 23:34:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20watch=20=E5=A4=9A?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=B8=80=E6=AC=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/remax-cli/src/build/watch.ts | 11 ++++------- .../remax-cli/src/build/webpack/plugins/Define.ts | 12 ++++++------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/remax-cli/src/build/watch.ts b/packages/remax-cli/src/build/watch.ts index b089b79824..396897cb5e 100644 --- a/packages/remax-cli/src/build/watch.ts +++ b/packages/remax-cli/src/build/watch.ts @@ -4,13 +4,14 @@ import { Compiler } from 'webpack'; import SingleEntryPlugin from 'webpack/lib/SingleEntryPlugin'; import { getPages } from '../getEntries'; -let isFirstRunWatcher = true; +let watchCounter = 0; export default function watch(options: Options, compiler: Compiler, watcher: any, addEntry = false) { + watchCounter += 1; // 监听额外的文件 const pages = getPages(options); chokidar.watch([`${options.rootDir}/app.config.{js,ts}`]).on('change', () => { - if (isFirstRunWatcher) return; + if (watchCounter <= 1) return; if (addEntry) { const nextPages = getPages(options); nextPages.forEach(np => { @@ -23,13 +24,9 @@ export default function watch(options: Options, compiler: Compiler, watcher: any }); chokidar.watch([`${options.rootDir}/**/*.config.{js,ts}`]).on('all', () => { - if (isFirstRunWatcher) return; + if (watchCounter <= 1) return; watcher.invalidate(); }); - if (isFirstRunWatcher) { - isFirstRunWatcher = false; - } - return watcher; } diff --git a/packages/remax-cli/src/build/webpack/plugins/Define.ts b/packages/remax-cli/src/build/webpack/plugins/Define.ts index b06ab4ab6f..3df3b0ac6f 100644 --- a/packages/remax-cli/src/build/webpack/plugins/Define.ts +++ b/packages/remax-cli/src/build/webpack/plugins/Define.ts @@ -1,9 +1,11 @@ +import * as path from 'path'; import { ReplaceSource } from 'webpack-sources'; import { Compiler, compilation } from 'webpack'; import { Options } from '@remax/types'; import { appEvents, pageEvents, hostComponents } from '@remax/macro'; import getModules from '../../utils/modules'; import { getPages } from '../../../getEntries'; +import winPath from '../../../winPath'; const PLUGIN_NAME = 'RemaxDefinePlugin'; @@ -58,10 +60,12 @@ export default class DefinePlugin { }); // TODO: 应该有更好的获取 modules 的方式? - const modules = getModules(chunk); + const modules = getModules(chunk).filter(m => + m.startsWith(winPath(path.join(this.remaxOptions.cwd, this.remaxOptions.rootDir))) + ); events[page.name] = modules.reduce((acc, cur) => { - return [...acc, ...(pageEvents.get(cur) || [])]; + return [...acc, ...(pageEvents.get(winPath(cur)) || [])]; }, []); }); @@ -75,10 +79,6 @@ export default class DefinePlugin { events = events.concat(Array.from(appEvents.get(key)!).sort()); } - if (process.env.NODE_ENV === 'test') { - events = []; - } - return JSON.stringify(events, null, 2); }