5

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

我能够用 JSHint 做到这一点。

任何帮助 ESLint 做同样的事情都将不胜感激。

4

1 回答 1

2

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

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

要解决这个问题,只需spawn:false在配置时使用 options 标志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直接在事件处理程序中进行修改,但是让属性携带更改的文件使其可用于可能使用它们的任意数量的任务。

于 2016-03-31T08:57:57.150 回答