发现node-watch 以及本身自带的watch在我的windows电脑当对文件增删改查时候,总是多次监听,经度娘指引,发现chokidar工具比较好用,附上大神的参考链接,当然举一反三也可以做别的实时监听操作,这个没有考虑嵌套文件的操作具体的可以自行递归循环文件。
var chokidar=require('chokidar'),
fold='./pro-01/source/',
fs=require('fs');
watcher = chokidar.watch(fold, {
ignored: /[\/\\]\./, persistent: true});
var log = console.log.bind(console);
// 文件添加,改变,删除 的时候执行操作
watcher.on('add', function(path) {
log('File', path, '文件添加');
})
.on('addDir', function(path) {
log('Directory', path, '文件夹内添加');
})
.on('change', function(path) {
// 1. 删除生成的new.js
// 2.读取文件夹下的文件列表
// 3.获取每个文件中的所有内容
// 4.将内容写入到new.js
var fileArr=[],
content='',mergeFile=fold+'new.js';
// 先删除合并文件
fs.unlinkSync(mergeFile);
// 读取文件夹列表
fs.readdir(fold, function (err,fileList) {
fileList.forEach(function (f) {
var info=fs.statSync(fold+f);
switch(info.mode){
case 16822:
console.log('[文件夹]'+f);
break;
case 33206:
fileArr.push(fold+f);
break;
}
});
// 获取每个文件中的所有内容
fileArr.forEach((filePath)=>{
var c=fs.readFileSync(filePath);
content+= c.toString()+'\n';
});
// 写入到文件
fs.writeFileSync(mergeFile,content);
});
log('File', path, '文件改变内容!!!!!!!!!!!!!');
})
.on('unlink', function(path) {
log('File', path, '文件被移除');
})
.on('unlinkDir', function(path) {
log('Directory', path, '文件夹被移除');
})
.on('error', function(error) {
log('发生错误', error);
})
.on('ready', function() {
log('Initial scan complete. Ready for changes.');
})
.on('raw', function(event, path, details) {
// log('Raw event info:', event, path, details);
})
网友评论