2016-04-07 65 views
2

使用grunt-watch监视文件更改对于添加/更改操作非常有用,因为当它使用更改列表调用任务时,任务的files(或fileSrc)属性将包含添加/更改文件。使用grunt观察删除的文件

与删除的文件不同。如果您观察已删除的文件并调用任务,则删除的文件将不会出现在任务的filesSrc属性或files属性的规范化部分中。

除了手动归一特定files元件的orig属性,有一种方法强制删除的文件出现在fileSrcfiles归一化部分?如果没有,那么规范orig(我不想重新发明轮子)的最佳方法是什么?

回答

2

很可能插件倾销从设计文件阵列被删除的文件,该插件但是不发出watchevent,你可以倾听:

grunt.initConfig({ 
    watch: { 
    scripts: { 
     files: ['**'], 
    }, 
    }, 
}); 
grunt.event.on('watch', function(action, filepath, target) { 
    if (target === 'scripts' && action === 'deleted') { 
    // your code goes here 
    } 
}); 

还有方法来建立一个观察任务它专门为观察者检测到删除时运行特定任务。这两种方法都在plugin's documentation中列出。

+0

是的,我已经使用了“按需编译文件”中描述的技术。 'watch'事件的麻烦在于只能有一个全局'watch'监听器,并且如果您有多个watch目标同时运行,则无法知道某个特定事件来自哪个目标。 – gzak

+0

例如,如果您以jslint作为例子,并假设您需要运行另一个执行非常像jslint(称为jslint2)但非单独(但重叠)文件集的监视目标,那么监视器监听器将不会选择,但要为jslint和jslint2两个集合的联合中的任何文件更改运行(否则它可能会丢失其中一个目标中的某些文件)。但这意味着某些文件可能会被jslint化(或jslint2'ed),而这本来不应该是。 – gzak

+0

改变你的条件来检查目标:'if(target ==='jslint'&& action ==='deleted')' – theaccordance