我想在jshint
中两次运行GruntJS
任务,但每次都有不同的选项。
我该怎么做呢?
目前,我的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应该是不同的
答案 0 :(得分:6)
jshint
是multitask。所以有可能必须遵循配置:
jshint: {
browser: {
files: [
'src/static/**/*.js',
'!src/static/bin',
'!src/static/js/libs/*.js'
],
options: {
jshintrc: '.jshintrc-browser'
}
},
node: {
files: [
'gruntfile.js',
'src/**/*.js', '!src/static/**',
'test/spec/**/*.js'
],
options: {
jshintrc: '.jshintrc'
}
}
}
运行浏览器版本:
grunt jshint:browser
。
要运行节点版本:
grunt jshint:node
。
正好跑步:
grunt jshint
将同时运行。
当然,您可能希望通过其他任务触发它们,例如:
grunt.registerTask('build', ['clean:all', 'jshint:browser', ...]);
您希望阅读Specifying JSHint options and globals部分以获取更多信息。