UNPKG

1.01 kBJavaScriptView Raw
1/*
2 * pub-server watch.js
3 * wrapper around watch library (chokidar)
4 * used by serve-statics and watch-sources
5 * TODO: dedup watches and look at aggregating watch paths with single watch
6 *
7 * copyright 2015-2020, Jürgen Leschner - github.com/jldec - MIT license
8 */
9
10var debug = require('debug')('pub:watch');
11
12var path = require('path');
13var ppath = path.posix || path;
14var chokidar = require('chokidar');
15var u = require('pub-util');
16
17module.exports = function watch(src, onEvent) {
18
19 var wDir = src.glob ? ppath.join(src.path, src.glob) : src.path;
20
21 var wOpts = u.assign(
22
23 { depth: (src.depth && src.depth - 1) || 0, // watcher depth 0 = src depth 1
24 ignoreInitial: true,
25 interval: '1s' },
26
27 src.watch);
28
29 wOpts.interval = u.ms(wOpts.interval);
30
31 debug('watching %s depth:%s, %s', src.name, wOpts.depth, wDir);
32
33 chokidar.watch(wDir, wOpts)
34 .on('all', function(evt, path) {
35 debug('%s %s %s', evt, src.name, path);
36 onEvent(evt, path);
37 });
38
39};