2013-02-08 64 views
43

我有一個咕嚕任務調用其他咕嚕任務。我想用編程確定的參數調用子任務。這可能嗎?我花了一些時間挖掘lib/grunt.jslib/grunt/task.js,但無法弄清楚。以編程方式將參數傳遞給grunt任務?

我使用grunt-compassGruntfile.js指定以下參數:

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上定義的嗎? – 2014-04-09 17:27:41

+2

@DanRocha我猜想它是一個在grunt.initConfig中指定的變量,它是在運行時使用Rosarch發佈的最後一行代碼設置的。 – njtman 2014-04-11 19:25:37

2

您可以編輯所有的咕嚕配置:

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

只運行前任務。但是你的解決方案是「更清潔」的。

相關問題