以编程方式将参数传递给grunt任务?

Nic*_*ner 46 javascript node.js gruntjs

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

我正在使用Gruntfile.js中grunt-compass指定的以下参数:

compass: {
  default_options: {
    src: 'components/201',
    dest: 'build',
    require: ['zurb-foundation']
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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});
  });
};
Run Code Online (Sandbox Code Playgroud)

以供参考:

$ grunt --version
grunt-cli v0.1.6
grunt v0.4.0rc6
Run Code Online (Sandbox Code Playgroud)

Nic*_*ner 58

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

compass: {
  default_options: {
    src: 'components/<%= myTask.src %>',
    dest: 'build',
    require: ['zurb-foundation']
  }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在你的任务中设置它:

grunt.config.set('myTask.src', getSrc());
Run Code Online (Sandbox Code Playgroud)

  • 你在哪里获得myTask var?它是全球性的吗?它是在grunt .iniConfig上定义的吗? (4认同)
  • @DanRocha我猜它是grunt.initConfig中指定的变量,你在运行时使用Rosarch发布的最后一行代码设置它. (2认同)