2013-03-19 48 views
4

我想在GruntJS两次运行jshint任务,但每次都有不同的选项。为同一任务咕噜两次

我该如何去做类似的事情?

目前,我Gruntfile.js看起来是这样的:

'use strict'; 

module.exports = function(grunt) { 
    var opts = { 
     pkg: grunt.file.readJSON('package.json'), 
     jasmine_node: { 
      matchall: true, 
      forceExit: true 
     }, 
     jshint: { 
      files: [ 
       'gruntfile.js', 
       'src/**/*.js', '!src/static/bin', '!src/static/js/libs/*.js', 
       'test/spec/**/*.js' 
      ], 
      options: { 
       jshintrc: '.jshintrc' 
      } 
     } 
    }; 

    grunt.initConfig(opts); 

    grunt.loadNpmTasks('grunt-contrib-jshint'); 
    grunt.loadNpmTasks('grunt-jasmine-node'); 

    grunt.registerTask('default', ['jshint', 'jasmine_node']); 
    grunt.registerTask('travis', ['jshint', 'jasmine_node']); 
}; 

,我可能会希望它是这样的:

var jshint: { 
    files: [ 
     'gruntfile.js', 
     'src/**/*.js', '!src/static/**', 
     'test/spec/**/*.js' 
    ], 
    options: { 
     jshintrc: '.jshintrc' 
    } 
} 

var jshint2 = { 
    files: [ 
     'src/static/**/*.js', 
     '!src/static/bin', 
     '!src/static/js/libs/*.js' 
    ], 
    options: { 
     jshintrc: '.jshintrc-browser' 
    } 
}; 

所以,我可以选择不同的选项前端javascript和NodeJS javascript,因为linting对于每个环境都应该是不同的

回答

6

jshintmultitask。因此,它是可能有以下配置:

​​

要运行浏览器版本

grunt jshint:browser

运行到节点版本

grunt jshint:node

只运行:

grunt jshint

会同时运行。

当然,你可能会想通过另一项任务触发它们,e.g:

grunt.registerTask('build', ['clean:all', 'jshint:browser', ...]); 

你要想要阅读的部分Specifying JSHint options and globals以获得更多信息。