From fc3ef810ba3cfddd7763ad6fc498a6f2cddc3064 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Sun, 11 Sep 2022 11:39:32 -0700 Subject: [PATCH] Update dev watcher to ignore more accurately (#40412) This ensures we ignore all except the files/directories we are explicitly wanting to watch to prevent watching/considering directories with massive amounts of files slowing down startup. ## Bug - [ ] Related issues linked using `fixes #number` - [ ] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` Fixes: https://github.com/vercel/next.js/pull/38483#issuecomment-1242154665 --- packages/next/server/dev/next-dev-server.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/next/server/dev/next-dev-server.ts b/packages/next/server/dev/next-dev-server.ts index d360778905f4..11cbc454c0cd 100644 --- a/packages/next/server/dev/next-dev-server.ts +++ b/packages/next/server/dev/next-dev-server.ts @@ -273,12 +273,10 @@ export default class DevServer extends Server { }) } - const wp = (this.webpackWatcher = new Watchpack({ - ignored: /([/\\]node_modules[/\\]|[/\\]\.next[/\\]|[/\\]\.git[/\\])/, - })) const pages = this.pagesDir ? [this.pagesDir] : [] const app = this.appDir ? [this.appDir] : [] const directories = [...pages, ...app] + const files = this.pagesDir ? getPossibleMiddlewareFilenames( pathJoin(this.pagesDir, '..'), @@ -303,6 +301,15 @@ export default class DevServer extends Server { ] files.push(...tsconfigPaths) + const wp = (this.webpackWatcher = new Watchpack({ + ignored: (pathname: string) => { + return ( + !files.some((file) => file.startsWith(pathname)) && + !directories.some((dir) => pathname.startsWith(dir)) + ) + }, + })) + wp.watch({ directories: [this.dir], startTime: 0 }) const fileWatchTimes = new Map() let enabledTypeScript = this.usingTypeScript