【问题标题】:Ignoring Files With Chokidar In Watched Folders使用 Chokidar 忽略监视文件夹中的文件
【发布时间】:2015-07-14 03:31:50
【问题描述】:

我正在尝试使用 Chokidar 忽略文件夹中的特定文件。我确定忽略路径的语法不正确,但我似乎找不到问题所在。我已经尝试过所有字符串、glob 和数组的组合。如果有人能指出我正确的方向,我将不胜感激。

这里有一个问题的简单示例。我试图忽略ignore.js,但由于正在监视该文件夹,因此在写入和删除文件时都会执行console.log

    var chokidar = require('chokidar');
    var fs = require('fs');
    var path = require('path');

    var watcher = chokidar.watch('./test', {
      ignored: path.resolve('./test/ignore.js'), 
      persistent: true,
      ignoreInitial: true,
      alwaysState: true
    });

    watcher.on('all',console.log);

    setTimeout(function(){fs.writeFile('./test/ignore.js', 'w');}, 200);
    setTimeout(function(){fs.unlink('./test/ignore.js');}, 300);

感谢您的帮助!

【问题讨论】:

  • chokidar 的文档说“整个路径都经过测试”,所以也许您应该这样做 __dirname + '/test/ignore.js'? “整个路径”可能不包含.
  • 我对您的解决方案寄予厚望,但不幸的是它没有奏效。我已使用 path.resolve 更新了示例以包含您的建议。谢谢

标签: node.js fs


【解决方案1】:

我倾向于同意@loganfsmyth 的评论,即您的路径名错误。在我的应用程序中,我动态查找 chokidar 正在从函数监视的文件夹。比如

Meteor.methods({
      getWatchFolder: function () {
          return watchFolder;
      },
});

我在其他地方设置了 watchFolder,它在这个问题的上下文中并不重要,但假设它返回“/tmp”。这很好用,并忽略了该文件:

var watcher = chokidar.watch(Meteor.call('getWatchFolder'), {
  ignored: path.resolve(Meteor.call('getWatchFolder')+'/ignore.js'), 
  persistent: true
});

我注意到这只是忽略了 /tmp/ignore.js,而不是像 /tmp/tmp2/ignore.js 这样的嵌套实例。如果您想忽略所有嵌套实例,可以通过在忽略路径中添加双星号通配符来轻松解决此问题:

var watcher = chokidar.watch(Meteor.call('getWatchFolder'), {
  ignored: path.resolve(Meteor.call('getWatchFolder')+'/**/ignore.js'), 
  persistent: true
});

我尝试将我的监视文件夹设置为 .喜欢你。它找到了很多文件,我确定它是从

运行的
/Users/esoyke/myAppName/.meteor/local/build/programs/server

这不尊重我的忽略路径。当我从观看中改变它时。到那个绝对路径,它自然会找到相同的文件,但忽略再次起作用。我怀疑这里的绝对路径与相对路径存在问题,看看你是否可以重构以使用绝对路径。

附:感谢您向我展示 path.resolve,我还没有使用过那个 Node 模块。我试图将多个子目录添加到忽略中,并试图通过编辑 chokidar 的默认正则表达式 /[/\]./ 来做到这一点。这种方法更简单,更容易阅读。可悲的是,目前 chokidar 的库似乎不允许多个忽略值,并且 path.resolve 在有多个 arg 时返回一个数组,所以我可能不得不回到正则表达式来获取多个忽略路径工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2014-05-06
    • 2023-03-15
    相关资源
    最近更新 更多