2013-02-08 5 views
43

私は、他の面倒な仕事を呼び出す大げさな仕事をしています。プログラムで決定された引数でサブタスクを呼びたい。これは可能ですか? lib/grunt.jslib/grunt/task.jsの周りを掘り起こしましたが、それは分かりませんでした。プログラマチックに引数をハングしたタスクに渡しますか?

私はGruntfile.jsで指定された以下の引数を持つgrunt-compassを使用しています:

compass: { 
    default_options: { 
    src: 'components/201', 
    dest: 'build', 
    require: ['zurb-foundation'] 
    } 
} 

私は、実行時にそれらを上書きできるようにしたい:

タスク/私のタスクを。 JS:参考

// simplified example 
module.exports = function(grunt) { 
    grunt.registerTask('foo', 'bar', function() { 
    var chooseDest = doWork(); 
    grunt.task.run('compass', {src: 'src', dest: chooseDest}); 
    }); 
}; 

$ grunt --version 
grunt-cli v0.1.6 
grunt v0.4.0rc6 

答えて

58

私はそれを理解しました。 Gruntfile.jsで<%= %>の構文を使用します。

compass: { 
    default_options: { 
    src: 'components/<%= myTask.src %>', 
    dest: 'build', 
    require: ['zurb-foundation'] 
    } 
} 

次に、あなたがあなたの仕事でそれを設定することができます。

grunt.config.set('myTask.src', getSrc()); 
+3

myTask varはどこで入手できますか?それはグローバルですか?それはgrunt.iniConfigで定義されていますか? –

+2

@ DanRocha私は、Rosuntが投稿したコードの最後の行を使用して実行時に設定するgrunt.initConfigで指定された変数だと思います。 – njtman

2

あなたはすべての兵卒の設定を編集することができます:ちょうど実行する前に

grunt.config('compass.default_options.src', 'blabla'); 

をタスク。しかし、あなたのソリューションは「よりクリーン」です。

関連する問題