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

Sev*_*Sev 5 gruntjs grunt-contrib-watch grunt-eslint

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

我能用JSHint做到这一点.

任何帮助让ESLint做同样的事情都将非常感激.

dol*_*ldt 2

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

无论您是否尝试使用grunt.config<%= ... %>模板化来动态修改配置对象(以在任务之间共享数据),您的问题可能是watch,默认情况下,为触发的任务生成子进程,使 eslint 在不同的上下文中运行。

要解决这个问题,只需在配置时使用选项标志即可。spawn:falsewatch

基本上,按如下方式配置您的任务:

watch: {
  scripts: {
    files: ['**/*.js'],
    tasks: ['eslint'],
    options: {
      spawn: false, // !!!
    },
  },
},
eslint: {
  target: '<%= changedFiles %>'
}
Run Code Online (Sandbox Code Playgroud)

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

grunt.event.on('watch', function(action, filepath){
  grunt.config('changedFiles', filepath);
}
Run Code Online (Sandbox Code Playgroud)

您还可以eslint.target直接在事件处理程序中进行修改,但是让属性携带更改的文件使其可供任意数量的可能使用它们的任务使用。