@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
JavaScript
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