日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發(fā)布時間:2025/1/21 javascript 97 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Node.JS监听文件夹变化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用Node.JS監(jiān)聽文件夾改變有許多應(yīng)用場合,比如:

構(gòu)建自動編繹工具

當(dāng)源文件改變時,自動運(yùn)行build過程,比如當(dāng)你寫CoffeeScript文件或SASS CSS文件時,保存之后可即時生成對應(yīng)的JS或CSS.

構(gòu)建自動布署工具

通過偵聽源文件夾的改變,你可以自動即時將改后的文件布署到測試服務(wù)器,加快你的開發(fā)測試速度。

這些工具其實(shí)都需要偵聽文件夾的改變,基于Node.JS的偵聽文件夾改變的模塊有很多。

fs.watch

其中Node.JS的文件系統(tǒng)也可偵聽某個目錄的改變, 如 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的最大缺點(diǎn)就是不支持子文件夾的偵聽,并且在很多情況下會偵聽到兩次事件(很多編輯器在保存的時侯是先把原文件清空,再進(jìn)行保存,因此會觸發(fā)兩次文件夾改變事件)。因此需要一些開源的模塊來監(jiān)聽文件夾目錄的改變。

chokidar

chokidar? 是一個基于node.JS的監(jiān)聽文件夾改變模塊。

安裝

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 是另一個監(jiān)聽文件夾改變的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位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的使用Node.JS监听文件夹变化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。