OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

使用Node.JS监听文件夹变化


分享到
分类 JS开源   关键字 Node.JS   发布 kris  1425014373354
注意 转载须保留原文链接,译文链接,作者译者等信息。  
使用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
})









社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 将BootstrapJS和AngularJS结合使用以及为什么不用jQuery
  2. 让我们写快速的JavaScript,JS性能优化小窍门
  3. CSS Sprite小图片自动合并工具(NodeJS,Python,Java,Ruby)
  4. 即将推出的CSS4 Level 4 Selectors(第4级选择器)
  5. 专为控制打印设计的CSS样式
  6. 通过Web Audio API可视化输出MP3音乐频率波形
  7. 用页面可见性(Page Visibility)API创建用户体验良好的网站
  8. Oracle发布官方版Node.JS数据库驱动
  9. 服务器端(NodeJS)使用jQuery选择器操作DOM(HTML/XML)
  10. Sortable极小的可拖放排序分组库;支持AngularJS,React,Meteor
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS开源
  1. 服务器端(NodeJS)使用jQuery选择器操作DOM(HTML/XML)
  2. Oracle发布官方版Node.JS数据库驱动
  3. 用JavaScript实现的Flash VM播放器(虚拟机)
  4. Chartist.js:一个开源的响应式前端矢量(SVG)图表库
  5. JavaScript中数学运算的安全范围及开源大整数高精度计算库
  6. Webaudio-mod-player:用HTML5音频接口播放mod音乐文件
  7. HexGL用HTML5和WebGL实现的3D赛车游戏
  8. CSS3动画效果速查参照表
  9. LokiJS:用JavaScript实现的面向文档的内存数据库
  10. 基于HTML5和JavaScript实现的Winamp MP3播放器

 关键字 - Node.JS
  1. OnceDB支持全文搜索和关系查询的Redis内存数据库:驱动安装及使用教程
  2. 告别Node.js
  3. 在nodejs中使用Redis缓存和查询数据及Session持久化(Express)
  4. 在OnceIO(Node.JS)中用Redis储存Session
  5. OnceIO的模块拦截与注入:模板文件路由重定向与Model数据改写
  6. 使用Node.JS监听文件夹变化
  7. NodeJS教程:基于OnceIO框架实现文件上传和验证
  8. OnceIO(Node.JS)服务器端Cookie设置、添加、删除、显示及其实现原理
  9. OnceIO(Node.JS)的网页(模板)的引用与嵌套
  10. OnceIO(NodeJS)中的服务器端缓存、模板预加载和静态资源文件的缓存和Gzip压缩机制

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号