以编程方式将parameter passing给grunt任务?

我有一个咕噜的任务,调用其他咕tasks任务。 我想用程序确定的参数调用一个子任务。 这可能吗? 我花了一些时间挖掘lib / grunt.jslib / grunt / task.js ,但无法弄清楚。

我使用grunt-compassGruntfile.js中指定的以下参数:

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

我希望能够在运行时覆盖它们:

tasks / my-task.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 

我想到了。 使用Gruntfile.js中的<%= %>语法:

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

那么你可以在你的任务中设置它:

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

你可以编辑所有的Gruntconfiguration:

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

就在运行任务之前。 但是你的解决scheme是“更清洁”的。