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
このようなことをするにはどうすればよいですか?
これはすべて grunt.option ページで説明されています。
あなたの場合、次のようにしてmyParam
の値を取得できます。
var target = grunt.option('myParam');
このコマンドラインを使用して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']);
}
別の方法:通常のNode=アプリでできるように、process.argv
配列を使用できます。
GruntJSは、もちろんNodeJS上に構築されています。
Gruntコマンドライン引数をNodeプロセス、grunt-nodemon
によって呼び出されます]に転送するために、この手法を使用しました。
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
を使用