Grunt命令行参数

SL *_*Dev 25 gruntjs

我有一个Grunt构建文件.我的构建文件有一个如下所示的任务:

myTask: {
  options: {
    configFile: "config/default.js",
    args: {   }
  },
  dev: {
    configFile: 'config/local.js',
    options: { args: {} },
  },
  test: {
    configFile: 'config/remote.js',
    options: { args: {} }
  }
}
Run Code Online (Sandbox Code Playgroud)

...

grunt.registerTask('customTask', ['myTask:dev']);
grunt.registerTask('customTask-Test', ['myTask:test']);
Run Code Online (Sandbox Code Playgroud)

目前,我可以从命令行运行以下命令:

> grunt customTask
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,我需要添加这样的能力:

> grunt customTask --myParam=myValue
Run Code Online (Sandbox Code Playgroud)

我需要在"dev"任务目标中查看myParam的值.但是,我无法弄清楚如何做到这一点.如果我可以在myTask:dev运行时打印出myParam的值,我会很高兴.换句话说,我想在运行时看到以下内容

> grunt customTask

> grunt customTask --myParam=hello
You entered hello

> grunt customTask-Test

> grunt customTask-Test --myParam=hello
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

bad*_*tax 38

这在grunt.option页面中都有解释.

在您的情况下,您可以获得以下值myParam:

var target = grunt.option('myParam');
Run Code Online (Sandbox Code Playgroud)

  • 对于默认参数,您可以使用标准JavaScript惯用法:`grunt.option('myParam')|| "defaultValue'`. (2认同)

小智 5

我做了一个使用示例,其中我可以通过以下命令行在要创建css.min的地方传递模块:

> grunt cssmin --target=my_module 
Run Code Online (Sandbox Code Playgroud)

Gruntfile.js

module.exports = function(grunt) {    
 var module = grunt.option('target'); //get value of target, my_module
 var cssminPath = 'assets/' + module + '/css/all.css';

 grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    cssmin:{
        css: {
            files: [{
                    src: [
                        'bower_components/bootstrap/dist/css/bootstrap.min.css',
                    ],
                    dest: cssminPath
                }]
        }
    },
  });
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.registerTask('default', ['cssmin']);
}
Run Code Online (Sandbox Code Playgroud)