@@ -239,9 +239,9 @@ export async function handle(args: Result<ReturnType<typeof options>>) {
239239
240240 // Watch for changes
241241 if ( args [ '--watch' ] ) {
242- let cleanupWatchers = await createWatchers (
243- watchDirectories ( scanner ) ,
244- async function handle ( files ) {
242+ let cleanupWatchers : ( ( ) => Promise < void > ) [ ] = [ ]
243+ cleanupWatchers . push (
244+ await createWatchers ( watchDirectories ( scanner ) , async function handle ( files ) {
245245 try {
246246 // If the only change happened to the output file, then we don't want to
247247 // trigger a rebuild because that will result in an infinite loop.
@@ -304,15 +304,15 @@ export async function handle(args: Result<ReturnType<typeof options>>) {
304304
305305 // Setup new watchers
306306 DEBUG && I . start ( 'Setup new watchers' )
307- let newCleanupWatchers = await createWatchers ( watchDirectories ( scanner ) , handle )
307+ let newCleanupFunction = await createWatchers ( watchDirectories ( scanner ) , handle )
308308 DEBUG && I . end ( 'Setup new watchers' )
309309
310310 // Clear old watchers
311311 DEBUG && I . start ( 'Cleanup old watchers' )
312- await cleanupWatchers ( )
312+ await Promise . all ( cleanupWatchers . splice ( 0 ) . map ( ( cleanup ) => cleanup ( ) ) )
313313 DEBUG && I . end ( 'Cleanup old watchers' )
314314
315- cleanupWatchers = newCleanupWatchers
315+ cleanupWatchers . push ( newCleanupFunction )
316316
317317 // Re-compile the CSS
318318 DEBUG && I . start ( 'Build CSS' )
@@ -362,14 +362,14 @@ export async function handle(args: Result<ReturnType<typeof options>>) {
362362 eprintln ( err . toString ( ) )
363363 }
364364 }
365- } ,
365+ } ) ,
366366 )
367367
368368 // Abort the watcher if `stdin` is closed to avoid zombie processes. You can
369369 // disable this behavior with `--watch=always`.
370370 if ( args [ '--watch' ] !== 'always' ) {
371371 process . stdin . on ( 'end' , ( ) => {
372- cleanupWatchers ( ) . then (
372+ Promise . all ( cleanupWatchers . map ( ( fn ) => fn ( ) ) ) . then (
373373 ( ) => process . exit ( 0 ) ,
374374 ( ) => process . exit ( 1 ) ,
375375 )
0 commit comments