@@ -11,7 +11,7 @@ import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cance
11
11
import { toErrorMessage } from 'vs/base/common/errorMessage' ;
12
12
import { Emitter } from 'vs/base/common/event' ;
13
13
import { isEqualOrParent , randomPath } from 'vs/base/common/extpath' ;
14
- import { ParsedPattern , patternsEquals } from 'vs/base/common/glob' ;
14
+ import { GLOBSTAR , ParsedPattern , patternsEquals } from 'vs/base/common/glob' ;
15
15
import { Disposable } from 'vs/base/common/lifecycle' ;
16
16
import { TernarySearchTree } from 'vs/base/common/map' ;
17
17
import { normalizeNFC } from 'vs/base/common/normalization' ;
@@ -663,12 +663,17 @@ export class ParcelWatcher extends Disposable implements IRecursiveWatcher {
663
663
664
664
// Only consider requests for watching that are not
665
665
// a child of an existing request path to prevent
666
- // duplication.
666
+ // duplication. In addition, drop any request where
667
+ // everything is excluded (via `**` glob).
667
668
//
668
669
// However, allow explicit requests to watch folders
669
670
// that are symbolic links because the Parcel watcher
670
671
// does not allow to recursively watch symbolic links.
671
672
for ( const request of requests ) {
673
+ if ( request . excludes . includes ( GLOBSTAR ) ) {
674
+ continue ; // path is ignored entirely (via `**` glob exclude)
675
+ }
676
+
672
677
if ( requestTrie . findSubstr ( request . path ) ) {
673
678
try {
674
679
const realpath = realpathSync ( request . path ) ;
0 commit comments