karma-borschik-preprocessor
Version:
A Karma plugin. Build JavaScript files trhough borschik on the fly.
47 lines (38 loc) • 1.24 kB
JavaScript
var chokidar = require('chokidar');
var borschik = require('./borschik-dep.js');
var fs = require('fs');
var watch = function(filepath, content) {
var fileMap = {};
var touch = function(path) {
var atime = Date.now() / 1000;
var mtime = Date.now() / 1000;
if (path !== filepath) {
fs.utimes(filepath, atime, mtime);
}
};
borschik.parseDepsJs(filepath, content, fileMap);
var watcher = chokidar.watch(Object.keys(fileMap), {
ignored: /^\./,
persistent: true
});
watcher
.on('change', function(path) {
console.log('File', path, 'has been changed');
borschik.parseDepsJs(path, fs.readFileSync(path), fileMap);
touch(path);
})
.on('unlink', function(path) {
console.log('File', path, 'has been removed');
if (fileMap[path]) {
delete fileMap[path];
}
watcher.close();
watcher.add(Object.keys(fileMap));
touch(path);
})
.on('error', function(error) {
console.error('Error happened in borschik watcher', error);
});
return watcher;
};
exports.watch = watch;