UNPKG

1.41 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createFileWatch = void 0;
4const path = require("path");
5const chokidar = require("chokidar");
6const rxjs_1 = require("rxjs");
7const path_1 = require("../utils/path");
8const log = require("../utils/log");
9function createFileWatch(projectPath, ignoredPaths = []) {
10 log.debug(`Watching for changes: projectPath: ${projectPath}, ignoredPaths: ${ignoredPaths}`);
11 const watch = chokidar.watch(projectPath, {
12 ignoreInitial: true,
13 ignored: [...ignoredPaths, /((^[\/\\])\..)|(\.js$)|(\.map$)|(\.metadata\.json|node_modules)/],
14 persistent: true,
15 });
16 const handleFileChange = (event, filePath, observer) => {
17 log.debug(`Watch: Path changed. Event: ${event}, Path: ${filePath}`);
18 if (event === 'unlinkDir' || event === 'addDir') {
19 // we don't need to trigger on directory removed or renamed as chokidar will fire the changes for each file
20 return;
21 }
22 observer.next({
23 filePath: path_1.ensureUnixPath(path.resolve(filePath)),
24 event,
25 });
26 };
27 return rxjs_1.Observable.create((observer) => {
28 watch.on('all', (event, filePath) => handleFileChange(event, filePath, observer));
29 return () => watch.close();
30 });
31}
32exports.createFileWatch = createFileWatch;
33//# sourceMappingURL=file-watcher.js.map
\No newline at end of file