欢迎访问 生活随笔!

尊龙游戏旗舰厅官网

当前位置: 尊龙游戏旗舰厅官网 > 前端技术 > javascript >内容正文

javascript

使用node.js监听文件夹变化 -尊龙游戏旗舰厅官网

发布时间:2025/1/21 javascript 26 豆豆
尊龙游戏旗舰厅官网 收集整理的这篇文章主要介绍了 使用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 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 }) 与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是尊龙游戏旗舰厅官网为你收集整理的使用node.js监听文件夹变化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得尊龙游戏旗舰厅官网网站内容还不错,欢迎将尊龙游戏旗舰厅官网推荐给好友。

网站地图