在Grunt中为单个文件运行JSHint

Dav*_*ess 5 jshint gruntjs

我在Grunt中有多个子任务(src,lib和test)的JSHint设置,效果很好.但是,由于我们刚开始使用此设置,因此我们的许多源文件中存在许多错误.

$ grunt jshint:src
... lots of errors ...
Run Code Online (Sandbox Code Playgroud)

在一次处理一个文件的同时,是否可以重新打印该单个文件?

$ grunt jshint:src:one.js
... only errors from one.js ...
Run Code Online (Sandbox Code Playgroud)

更新

一个复杂因素是监视任务还有多个子任务,可根据编辑的文件类型触发不同的任务.

watch: {
    src: {
        files: [ SRC_DIR + "hgm*.js" ],
        tasks: [ "jshint:src", "test" ]
    },
    lib: {
        files: [ "lib/hgm-test-setup.js", "lib/hgm.loader.js" ],
        tasks: [ "jshint:lib", "test" ]
    },
    test: {
        files: [ "tests/**/*.js" ],
        tasks: [ "jshint:test", "test" ]
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做的原因是,src和lib使用一个.jshint同时test使用不同的一个指定用于测试如断言的所有全局变量.我可以结合src和lib,但我可以覆盖为JSHint配置文件test?

her*_*w78 4

grunt -contrib-watch-task提供了如何配置任务以及使用 watch-event 仅检查已更改文件的示例:

grunt.initConfig({
  watch: {
    scripts: {
      files: ['lib/*.js'],
      tasks: ['jshint'],
      options: {
        nospawn: true,
      },
    },
  },
  jshint: {
    all: ['lib/*.js'],
  },
});

// on watch events configure jshint:all to only run on changed file
grunt.event.on('watch', function(action, filepath) {
  grunt.config(['jshint', 'all'], filepath);
});
Run Code Online (Sandbox Code Playgroud)