Grunt两次完成同样的任务

bev*_*qua 5 jshint gruntjs

我想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']);
};
Run Code Online (Sandbox Code Playgroud)

我可能希望它是这样的:

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'
    }
};
Run Code Online (Sandbox Code Playgroud)

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

asg*_*oth 6

jshint是一个多任务.所以有可能必须遵循配置:

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'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

要运行浏览器版本:

grunt jshint:browser.

要运行到节点版本:

grunt jshint:node.

正好跑:

grunt jshint

将同时运行.

当然,您可能希望通过其他任务触发它们,例如:

grunt.registerTask('build', ['clean:all', 'jshint:browser', ...]);
Run Code Online (Sandbox Code Playgroud)

您想要阅读" 指定JSHint选项和全局变量 "一节以获取更多信息.