使用Node.JS监听文件夹变化
来源:互联网 发布:万网和阿里云什么关系 编辑:程序博客网 时间:2024/06/05 16:40
使用Node.JS监听文件夹变化
使用Node.JS监听文件夹改变有许多应用场合,比如:
构建自动编绎工具
当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应的JS或CSS.
构建自动布署工具
通过侦听源文件夹的改变,你可以自动即时将改后的文件布署到测试服务器,加快你的开发测试速度。
这些工具其实都需要侦听文件夹的改变,基于Node.JS的侦听文件夹改变的模块有很多。
fs.watch
其中Node.JS的文件系统也可侦听某个目录的改变, 如 fs.watch
fs.watch(
'somedir'
,
function
(event, filename) {
console.log(
'event is: '
+ event);
if
(filename) {
console.log(
'filename provided: '
+ filename);
}
else
{
console.log(
'filename not provided'
);
}
});
其中fs.watch的最大缺点就是不支持子文件夹的侦听,并且在很多情况下会侦听到两次事件(很多编辑器在保存的时侯是先把原文件清空,再进行保存,因此会触发两次文件夹改变事件)。因此需要一些开源的模块来监听文件夹目录的改变。
chokidar
chokidar 是一个基于node.JS的监听文件夹改变模块。
安装
npm install chokidar
示例
var
chokidar = require(
'chokidar'
);
var
watcher = chokidar.watch(
'file, dir, or glob'
, {
ignored: /[\/\\]\./, persistent:
true
});
var
log = console.log.bind(console);
watcher
.on(
'add'
,
function
(path) { log(
'File'
, path,
'has been added'
); })
.on(
'addDir'
,
function
(path) { log(
'Directory'
, path,
'has been added'
); })
.on(
'change'
,
function
(path) { log(
'File'
, path,
'has been changed'
); })
.on(
'unlink'
,
function
(path) { log(
'File'
, path,
'has been removed'
); })
.on(
'unlinkDir'
,
function
(path) { log(
'Directory'
, path,
'has been removed'
); })
.on(
'error'
,
function
(error) { log(
'Error happened'
, error); })
.on(
'ready'
,
function
() { log(
'Initial scan complete. Ready for changes.'
); })
.on(
'raw'
,
function
(event, path, details) { log(
'Raw event info:'
, event, path, details); })
watch
Watch 是另一个监听文件夹改变的Node.JS模块
安装
npm install watch
示例,侦听所有改变事件
watch.watchTree(
'/home/mikeal'
,
function
(f, curr, prev) {
if
(
typeof
f ==
"object"
&& prev ===
null
&& curr ===
null
) {
// Finished walking the tree
}
else
if
(prev ===
null
) {
// f is a new file
}
else
if
(curr.nlink === 0) {
// f was removed
}
else
{
// f was changed
}
})
示例,侦听不同事件
var
watch = require(
'watch'
)
watch.createMonitor(
'/home/mikeal'
,
function
(monitor) {
monitor.files[
'/home/mikeal/.zshrc'
]
// Stat object for my zshrc.
monitor.on(
"created"
,
function
(f, stat) {
// Handle new files
})
monitor.on(
"changed"
,
function
(f, curr, prev) {
// Handle file changes
})
monitor.on(
"removed"
,
function
(f, stat) {
// Handle removed files
})
monitor.stop();
// Stop watching
})
阅读全文
0 0
- 使用Node.JS监听文件夹变化
- iOS 监听文件夹变化
- 使用Common-io中FileAlterationListenerAdaptor监听文件夹的变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- 使用js监听手机端输入法的变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化
- Angular.js中使用$watch监听模型变化 (转载)
- 第1章-安装Node.js及相关要点-1.10.监听文件变化
- node.js创建文件夹
- js 监听 iframe url变化
- js-监听input值变化
- iOS 实时监听文件夹的变化
- Flume实战监听文件夹内文件变化
- Node.js使用递归实现遍历文件夹中所有文件
- Realm及相关对象——《跟我学Shiro》
- 数学家新发现:素数的分布有规律可循
- Hadoop--回收站恢复有效时间内文件
- 利用runtime实现UITextField文字大小适配机型
- C++加减随机计算
- 使用Node.JS监听文件夹变化
- Sublime Text 3 安装javascript控制台环境(Bulid System)
- Android基于MVP框架的联网登陆软件
- erlang复杂链表查找
- 进程通信系列(13)共享内存系统调用与代码示例
- nginx多个if里面proxy_pass
- jquery无法为动态生成的元素添加点击事件的解决方法
- CSS动画的性能优化
- 基于范围的for循环 调试失败 提示应输入