web-dev-qa-db-ja.com

Gruntコマンドラインパラメーター

Gruntビルドファイルがあります。ビルドファイルには、次のようなタスクがあります。

myTask: {
  options: {
    configFile: "config/default.js",
    args: {   }
  },
  dev: {
    configFile: 'config/local.js',
    options: { args: {} },
  },
  test: {
    configFile: 'config/remote.js',
    options: { args: {} }
  }
}

...

grunt.registerTask('customTask', ['myTask:dev']);
grunt.registerTask('customTask-Test', ['myTask:test']);

現在、コマンドラインから次を実行できます。

> grunt customTask

すべてが正常に動作します。ただし、次のようなことを行う機能を追加する必要があります。

> grunt customTask --myParam=myValue

「dev」タスクターゲットのmyParamの値を調べる必要があります。ただし、その方法がわかりません。 myTask:devが実行されているときにmyParamの値を出力できるとうれしいです。つまり、実行時に次のようになりたい

> grunt customTask

> grunt customTask --myParam=hello
You entered hello

> grunt customTask-Test

> grunt customTask-Test --myParam=hello

このようなことをするにはどうすればよいですか?

24
SL Dev

これはすべて grunt.option ページで説明されています。

あなたの場合、次のようにしてmyParamの値を取得できます。

var target = grunt.option('myParam');
37
badsyntax

このコマンドラインを使用してcss.minを作成するモジュールを渡すことができる使用例を作成しました。

> grunt cssmin --target=my_module 

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']);
}
5
Ricardo

別の方法:通常のNode=アプリでできるように、process.argv配列を使用できます。

GruntJSは、もちろんNodeJS上に構築されています。

Gruntコマンドライン引数をNodeプロセス、grunt-nodemonによって呼び出されます]に転送するために、この手法を使用しました。

4
Jonathan

process.argv配列を使用して、コマンドライン引数をgruntから読み取ることもできます。

var args = process.argv;
runScript(args[2], args[3]);

最初と2番目の引数はnodeコマンドとスクリプト名です。

execute: {
    target: {
      options: {
         args : [arg1, arg2]
      },
      src: ['script.js']
    }
}

grunt-executeを使用

2
Thami Bouchnafa