当通过grunt-contrib-watch观看direcory时,如何检索已更改文件的名称?

说我有一个CSS文件的目录,我的Grunt监视任务是这样configuration的:

watch: { css: { files: ['css/*.css'], tasks: ['foo'] } } 

foo是我自己的自定义任务:

 grunt.registerTask('foo', function () { // but which file changed? }); 

因此,只要该目录中的任何CSS文件发生更改,Grunt就会调用我的foo任务。 我想从我的任务中检索受影响的CSS文件(更改的文件)的文件名。 我希望这是可能的。

该任务发出一个可以收听的观看事件。 自述文件中有一个示例:

 grunt.event.on('watch', function(action, filepath, target) { grunt.log.writeln(target + ': ' + filepath + ' has ' + action); }); 

我在手表插件的README文件中find了解决scheme:

 grunt.event.on('watch', function(action, filepath, target) { grunt.log.writeln(target + ': ' + filepath + ' has ' + action); }); 

所以,无论何时触发观察任务,它都会触发一个"watch"事件。 这使我们能够处理该事件并检索作为第二个参数提供的已更改文件的文件名。 我已经检查过了,这个事件处理程序会在watch任务configuration中设置的任务之前运行(我上面代码中的foo ),所以我们是黄金的。

评论:虽然我希望更简化的解决scheme。 为什么监视任务不能直接将文件名称提供给通过参数调用的任务? 这个“手表”处理程序不是最佳的代码模式IMO。