From 89e7a419d7108dc3344d0bc5690798f695a46fd1 Mon Sep 17 00:00:00 2001 From: Yunfei He Date: Mon, 16 Aug 2021 15:46:01 +0800 Subject: [PATCH] fix: `Matcher` for chokidar WatchOptions#ignored (#4616) --- packages/vite/src/node/index.ts | 1 + packages/vite/src/node/server/index.ts | 6 +++++- packages/vite/types/anymatch.d.ts | 5 +++++ packages/vite/types/chokidar.d.ts | 3 ++- 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 packages/vite/types/anymatch.d.ts diff --git a/packages/vite/src/node/index.ts b/packages/vite/src/node/index.ts index b5b4735f5fc632..59a07c0c715861 100644 --- a/packages/vite/src/node/index.ts +++ b/packages/vite/src/node/index.ts @@ -83,3 +83,4 @@ export type { FSWatcher, WatchOptions } from 'types/chokidar' export type { Terser } from 'types/terser' export type { RollupCommonJSOptions } from 'types/commonjs' export type { RollupDynamicImportVarsOptions } from 'types/dynamicImportVars' +export type { Matcher, AnymatchPattern, AnymatchFn } from 'types/anymatch' diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 70778681816a78..50721cb5c06556 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -319,7 +319,11 @@ export async function createServer( const { ignored = [], ...watchOptions } = serverConfig.watch || {} const watcher = chokidar.watch(path.resolve(root), { - ignored: ['**/node_modules/**', '**/.git/**', ...ignored], + ignored: [ + '**/node_modules/**', + '**/.git/**', + ...(Array.isArray(ignored) ? ignored : [ignored]) + ], ignoreInitial: true, ignorePermissionErrors: true, disableGlobbing: true, diff --git a/packages/vite/types/anymatch.d.ts b/packages/vite/types/anymatch.d.ts new file mode 100644 index 00000000000000..9204588583046d --- /dev/null +++ b/packages/vite/types/anymatch.d.ts @@ -0,0 +1,5 @@ +export type AnymatchFn = (testString: string) => boolean +export type AnymatchPattern = string | RegExp | AnymatchFn +type AnymatchMatcher = AnymatchPattern | AnymatchPattern[] + +export { AnymatchMatcher as Matcher } diff --git a/packages/vite/types/chokidar.d.ts b/packages/vite/types/chokidar.d.ts index 743c2cb3e19d5b..8882f026390d4e 100644 --- a/packages/vite/types/chokidar.d.ts +++ b/packages/vite/types/chokidar.d.ts @@ -29,6 +29,7 @@ THE SOFTWARE. /// import * as fs from 'fs' +import { Matcher } from './anymatch' export interface FSWatcher extends fs.FSWatcher { options: WatchOptions @@ -117,7 +118,7 @@ export interface WatchOptions { * (the path), second time with two arguments (the path and the * [`fs.Stats`](https://nodejs.org/api/fs.html#fs_class_fs_stats) object of that path). */ - ignored?: any + ignored?: Matcher /** * If set to `false` then `add`/`addDir` events are also emitted for matching paths while