grunt-contrib-watch不支持eslint只能监视已更改的文件集

时间:2015-06-27 22:10:20

标签: gruntjs grunt-contrib-watch grunt-eslint

我似乎无法让ESLint仅使用grunt-contrib-watch在更改的文件上运行。

我能够用JSHint做到这一点。

非常感谢任何帮助让ESLint做同样的事情。

1 个答案:

答案 0 :(得分:1)

我设法在前几天设置了这个,所以我会发布一个可能的解决方案。

无论您是尝试使用grunt.config还是<%= ... %>模板动态修改配置对象(在任务之间共享数据),您的问题可能都是watch,默认情况下,spawns child processes用于触发的任务,使eslint在不同的上下文中运行。

要解决此问题,只需在配置spawn:false时使用watch选项标记。

基本上,配置您的任务:

watch: {
  scripts: {
    files: ['**/*.js'],
    tasks: ['eslint'],
    options: {
      spawn: false, // !!!
    },
  },
},
eslint: {
  target: '<%= changedFiles %>'
}

然后将事件处理程序附加到监视事件,设置changedFiles

grunt.event.on('watch', function(action, filepath){
  grunt.config('changedFiles', filepath);
}

您还可以直接在事件处理程序中修改eslint.target,但如果某个属性包含已更改的文件,则可以将其用于可能使用它们的任意数量的任务。