diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index 872b984f59b2e6..fe56a3b5f6fb60 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -620,6 +620,7 @@ async function doBuild( config.logger.info(colors.cyan(`\nwatching for file changes...`)) const resolvedChokidarOptions = resolveChokidarOptions( + config, config.build.watch.chokidar ) diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 780c43bfadca2c..2f088b6f5fa2e4 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -530,11 +530,13 @@ export async function resolveConfig( // resolve cache directory const pkgPath = lookupFile(resolvedRoot, [`package.json`], { pathOnly: true }) - const cacheDir = config.cacheDir - ? path.resolve(resolvedRoot, config.cacheDir) - : pkgPath - ? path.join(path.dirname(pkgPath), `node_modules/.vite`) - : path.join(resolvedRoot, `.vite`) + const cacheDir = normalizePath( + config.cacheDir + ? path.resolve(resolvedRoot, config.cacheDir) + : pkgPath + ? path.join(path.dirname(pkgPath), `node_modules/.vite`) + : path.join(resolvedRoot, `.vite`) + ) const assetsFilter = config.assetsInclude && diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index db76f2852678d5..dfb78a4b38503c 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -315,7 +315,7 @@ export async function createServer( const httpsOptions = await resolveHttpsConfig(config.server.https) const { middlewareMode } = serverConfig - const resolvedWatchOptions = resolveChokidarOptions({ + const resolvedWatchOptions = resolveChokidarOptions(config, { disableGlobbing: true, ...serverConfig.watch }) diff --git a/packages/vite/src/node/watch.ts b/packages/vite/src/node/watch.ts index 47a455a0cd0e76..5b3332da2d3d1f 100644 --- a/packages/vite/src/node/watch.ts +++ b/packages/vite/src/node/watch.ts @@ -1,6 +1,9 @@ +import { escapePath } from 'fast-glob' import type { WatchOptions } from 'dep-types/chokidar' +import type { ResolvedConfig } from '.' export function resolveChokidarOptions( + config: ResolvedConfig, options: WatchOptions | undefined ): WatchOptions { const { ignored = [], ...otherOptions } = options ?? {} @@ -10,6 +13,7 @@ export function resolveChokidarOptions( '**/.git/**', '**/node_modules/**', '**/test-results/**', // Playwright + escapePath(config.cacheDir) + '/**', ...(Array.isArray(ignored) ? ignored : [ignored]) ], ignoreInitial: true,