@@ -37,6 +37,7 @@ export class WorkspaceDevRunner {
3737 private graph : Graph ;
3838 private visited : Record < string , boolean > ;
3939 private visiting : Record < string , boolean > ;
40+ private matched : Record < string , boolean > ;
4041 private metaData ! : Package [ 'packageJson' ] ;
4142
4243 constructor ( options : WorkspaceDevRunnerOptions ) {
@@ -46,6 +47,7 @@ export class WorkspaceDevRunner {
4647 this . packages = [ ] ;
4748 this . visited = { } ;
4849 this . visiting = { } ;
50+ this . matched = { } ;
4951 this . graph = new Graph ( { directed : true } ) ;
5052 }
5153
@@ -80,6 +82,7 @@ export class WorkspaceDevRunner {
8082 this . graph . setNode ( name , node ) ;
8183 this . visited [ name ] = false ;
8284 this . visiting [ name ] = false ;
85+ this . matched [ name ] = false ;
8386
8487 const packageName = name ;
8588 const deps = {
@@ -185,6 +188,10 @@ export class WorkspaceDevRunner {
185188 } ) ;
186189 child . stdout . on ( 'data' , async ( data ) => {
187190 const stdout = data . toString ( ) ;
191+ if ( this . matched [ node ] ) {
192+ logger . emitLogOnce ( 'stdout' , stdout ) ;
193+ return ;
194+ }
188195 logger . appendLog ( 'stdout' , stdout ) ;
189196 const match = config ?. match ;
190197 const matchResult = match
@@ -193,6 +200,7 @@ export class WorkspaceDevRunner {
193200
194201 if ( matchResult ) {
195202 logger . flushStdout ( ) ;
203+ this . matched [ node ] = true ;
196204 this . visited [ node ] = true ;
197205 this . visiting [ node ] = false ;
198206 await this . start ( ) ;
@@ -202,9 +210,7 @@ export class WorkspaceDevRunner {
202210
203211 child . stderr . on ( 'data' , ( data ) => {
204212 const stderr = data . toString ( ) ;
205- logger . appendLog ( 'stderr' , stderr ) ;
206- logger . emitLog ( 'stderr' ) ;
207- logger . reset ( 'stderr' ) ;
213+ logger . emitLogOnce ( 'stderr' , stderr ) ;
208214 } ) ;
209215
210216 child . on ( 'close' , ( ) => { } ) ;
0 commit comments