@@ -5,24 +5,25 @@ import * as path from "path";
55import { INITIAL_SYNC_EVENT_NAME , FILES_CHANGE_EVENT_NAME } from "../../constants" ;
66import { PreparePlatformData } from "../workflow/workflow-data-service" ;
77import { PreparePlatformService } from "./prepare-platform-service" ;
8+ import { WebpackCompilerService } from "../webpack/webpack-compiler-service" ;
89
910interface IPlatformWatcherData {
1011 webpackCompilerProcess : child_process . ChildProcess ;
1112 nativeFilesWatcher : choki . FSWatcher ;
1213}
1314
14- export class PlatformWatcherService extends EventEmitter implements IPlatformWatcherService {
15+ export class PlatformWatcherService extends EventEmitter {
1516 private watchersData : IDictionary < IDictionary < IPlatformWatcherData > > = { } ;
1617 private isInitialSyncEventEmitted = false ;
1718 private persistedFilesChangeEventData : IFilesChangeEventData [ ] = [ ] ;
1819
1920 constructor (
2021 private $logger : ILogger ,
2122 private $preparePlatformService : PreparePlatformService ,
22- private $webpackCompilerService : IWebpackCompilerService
23+ private $webpackCompilerService : WebpackCompilerService
2324 ) { super ( ) ; }
2425
25- public async startWatcher ( platformData : IPlatformData , projectData : IProjectData , preparePlatformData : PreparePlatformData ) : Promise < void > {
26+ public async startWatchers ( platformData : IPlatformData , projectData : IProjectData , preparePlatformData : PreparePlatformData ) : Promise < void > {
2627 this . $logger . out ( "Starting watchers..." ) ;
2728
2829 if ( ! this . watchersData [ projectData . projectDir ] ) {
@@ -42,6 +43,20 @@ export class PlatformWatcherService extends EventEmitter implements IPlatformWat
4243 this . emitInitialSyncEvent ( { platform : platformData . platformNameLowerCase , hasNativeChanges } ) ;
4344 }
4445
46+ public async stopWatchers ( projectDir : string , platform : string ) {
47+ const platformLowerCase = platform . toLowerCase ( ) ;
48+
49+ if ( this . watchersData && this . watchersData [ projectDir ] && this . watchersData [ projectDir ] [ platformLowerCase ] && this . watchersData [ projectDir ] [ platformLowerCase ] . nativeFilesWatcher ) {
50+ this . watchersData [ projectDir ] [ platformLowerCase ] . nativeFilesWatcher . close ( ) ;
51+ this . watchersData [ projectDir ] [ platformLowerCase ] . nativeFilesWatcher = null ;
52+ }
53+
54+ if ( this . watchersData && this . watchersData [ projectDir ] && this . watchersData [ projectDir ] [ platformLowerCase ] && this . watchersData [ projectDir ] [ platformLowerCase ] . webpackCompilerProcess ) {
55+ this . $webpackCompilerService . stopWebpackCompile ( platform ) ;
56+ this . watchersData [ projectDir ] [ platformLowerCase ] . webpackCompilerProcess = null ;
57+ }
58+ }
59+
4560 private async startJSWatcherWithPrepare ( platformData : IPlatformData , projectData : IProjectData , config : IWebpackCompilerConfig ) : Promise < void > {
4661 if ( ! this . watchersData [ projectData . projectDir ] [ platformData . platformNameLowerCase ] . webpackCompilerProcess ) {
4762 this . $webpackCompilerService . on ( "webpackEmittedFiles" , data => {
0 commit comments