2013-03-19 93 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以獲得更多信息。