UNPKG

1.44 kBJavaScriptView Raw
1'use strict';
2
3var watcher = require('./watcher')
4 , colors = require('ansicolors')
5 , log = require('./log')
6 , config = require('../config/current')
7 , events = require('events')
8 ;
9
10function reportWatchedFiles(watchers) {
11 log.println('Watching ' + colors.brightGreen('[' + Object.keys(watchers).length + ' files]'));
12}
13
14module.exports = function initWatcher(root) {
15 var watcherInitialized
16 , emitter = new events.EventEmitter()
17 , feed = config.feed
18 , opts = {
19 fileFilter : feed.fileFilter || '*.js'
20 , directoryFilter : feed.directoryFilter || [ '!.*', '!node_modules' ]
21 , root : root
22 }
23 ;
24
25 watcher.watchTree(
26 opts
27 , function onAddedWatch(info) {
28 try {
29 log.print('Started watching: ' + info.entry.path);
30
31 // log total every time a new file is added after watcher was initialized and source it
32 if (watcherInitialized) {
33 reportWatchedFiles(info.all);
34 emitter.emit('file-changed', info.entry);
35 }
36 } catch(e) {
37 console.trace();
38 log.error(e);
39 }
40 }
41 , function onChanged(file) {
42 emitter.emit('file-changed', file);
43 }
44 , function onWatcherInitialized(watchers) {
45 watcherInitialized = true;
46 reportWatchedFiles(watchers);
47 emitter.emit('initialized', watchers);
48 }
49 );
50
51 return emitter;
52};