UNPKG

@farmfe/core

Version:

Farm is a extremely fast web build tool written in Rust. Farm can start a project in milliseconds and perform HMR within 10ms, making it much faster than similar tools like webpack and vite.

41 lines 1.63 kB
import path from 'node:path'; import chokidar from 'chokidar'; import glob from 'fast-glob'; function resolveChokidarOptions(config, insideChokidarOptions) { const { ignored = [], ...userChokidarOptions } = config.server?.hmr?.watchOptions ?? {}; let cacheDir = path.resolve(config.root, 'node_modules', '.farm', 'cache'); if (typeof config.compilation?.persistentCache === 'object' && config.compilation.persistentCache.cacheDir) { cacheDir = config.compilation.persistentCache.cacheDir; if (!path.isAbsolute(cacheDir)) { cacheDir = path.resolve(config.root, cacheDir); } } const options = { ignored: [ '**/.git/**', '**/node_modules/**', '**/test-results/**', glob.escapePath(cacheDir) + '/**', glob.escapePath(path.resolve(config.root, config.compilation.output.path)) + '/**', ...(Array.isArray(ignored) ? ignored : [ignored]) ], ignoreInitial: true, ignorePermissionErrors: true, // for windows and macos, we need to wait for the file to be written awaitWriteFinish: process.platform === 'linux' ? undefined : { stabilityThreshold: 10, pollInterval: 10 }, ...userChokidarOptions, ...insideChokidarOptions }; return options; } export function createWatcher(config, files, chokidarOptions) { const options = resolveChokidarOptions(config, chokidarOptions); return chokidar.watch(files, options); } //# sourceMappingURL=create-watcher.js.map