使用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

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
})

使用Node.JS监听文件夹变化相关推荐

  1. .net core 监听文件夹变化, FileSystemWatcher 封装

    功能: .net core 监听文件夹变化, FileSystemWatcher 封装 问题1:复制一个新文件能正常运行,但是复制第二个文件的时候就报一个文件正被其他线程占用无法打开的异常?The p ...

  2. Java实时监听文件夹,实现实时监听微信接收的文件,去掉文件的只读属性

    前言 众所周知,小而美软件每次更新都不干人事啊.上次忘了哪个版本更新的,接收到的文件一律是只读文件,虽然只需要右键属性把只读勾选去掉就行,但是每次接收了个文件都要这么做属实是有点麻烦.所以就自己写了个 ...

  3. html5中检测网络状态的方法,前端js监听浏览器网络变化

    首先,为什么要让前端判断用户的网络状态呢--为了更好的用户体验. 其次,前端能否判断网络状态?有哪些方法? 1,可以做到渐进式判断,不能做到绝对准确. 2,使用的是navigator.onLine或n ...

  4. unity 监听文件夹更新,获取本地图片并显示

    1.监听文件夹更新方法: 2.copy图片并粘贴,命名方式以当前时间命名 3.文件夹文件按创建时间排序 时间戳命名 局域网发送和接收图片(udp) Unity Unity与UDP协议字符串图片的发送和 ...

  5. C# FileSystemWatcher监听文件夹

    用FileSystemWatcher监听文件夹 很久没有写windows服务了,这两天做了一个监听文件夹的服务,用FileSystemWatcher类监听文件夹,如果有新创建的xml文件,就把xml文 ...

  6. unity中监听文件夹并且创建文件夹后做资源更新

    unity中监听文件夹并且创建文件夹后做资源更新 有时候我们在设计的时候,可能对项目的文件内容进行监听,也可能需要在监听某个文件夹的操作,并且做出相对应的处理,例如项目资源的大小监听等,以下就提供两种 ...

  7. js 监听URL地址变化

    js 监听URL的hash变化 项目中使用AntdUI组件+react  里面使用了menu组件管理目录结构,不同目录组件页面之中有点击按钮进行不同目录的跳转,因为是各种组件的关系,点击各组件后准确跳 ...

  8. js 监听浏览器窗口大小变化

    监听浏览器大小变化 window.addEventListener('resize', function() {// 变化后需要做的事console.log("bianhuale====== ...

  9. Flume实战监听文件夹内文件变化

    Flume官网有多种场景的source,sink,channel的配置 1.flume安装目录下新建文件夹 example 2.在example下新建文件 spooldir-logger.conf 内 ...

最新文章

  1. 使用公式给参数赋默认初始值
  2. JZOJ 4675. 【NOIP2016提高A组模拟7.21】Double-row
  3. linux chown命令格式,在Linux上如何使用chown命令 (文件所有权)
  4. UGUI事件之Drag拖拽事件
  5. [剑指offer][JAVA]面试题[51][数组中的逆序对][归并排序]
  6. python全景图像拼接_Python+OpenCV实现图像的全景拼接
  7. thinkphp3.2加载第三方函数库
  8. 浅谈Visual Studio 2010并行运算原理
  9. 1500页,40万字,阿里淘系技术2020技术年货来了!
  10. ThinkPHP实现文章上一篇和下一篇
  11. java实现签名和解签
  12. 史上最全英文免费编程电子书列表
  13. 回归算法--K近邻算法
  14. IllustratorCS5初学者必读(7):透明度调板
  15. Ramp Number
  16. PPT2016;插入视频,无法实现自动播放
  17. 创建Deployment时指定hostnetwork是干啥的?
  18. k-means聚类算法——c语言
  19. php 五子棋算法,AI智能五子棋算法——假如我是计算机
  20. 弘辽科技:拼多多推广单元是什么意思?怎么做推广?

热门文章

  1. 第15天学习Java的笔记(封装性,this,构造方法)
  2. Dev-C++安装教程附免费安装包资源
  3. springboot项目文档源码_基于SpringBoot和Vue的企业级中后台项目(附源码)
  4. sublime配置python3环境_【env】Sublime配置Python3开发环境
  5. fopen、_wfopen临时
  6. lingo变量无限制版本_LINGO笔记
  7. c# 获取excel单元格公式结果_excel公式应用技巧:文字和数字混合的单元格,如何求和?...
  8. dtm文件生成等高线 lisp_DEM、DSM和DTM的区别
  9. 嵌入式笔录(6)单管收音机电路分析
  10. access开发精要(10)-筛选