以编程方式设置grunt任务的选项?

Nic*_*ner 16 javascript gruntjs

我有一个咕噜咕噜的任务,看着选项grunt.option('foo').如果我正在调用此任务grunt.task.run('my-task'),我该如何更改这些参数?

我正在寻找类似的东西:

grunt.task.run('my-task', {foo: 'bar'});
Run Code Online (Sandbox Code Playgroud)

这将相当于:

$ grunt my-task --foo 'bar'
Run Code Online (Sandbox Code Playgroud)

这可能吗?

(这个问题是我遇到的另一个问题,但并不完全相同,因为在这种情况下我无法访问原始任务的Gruntfile.js.)

jjt*_*jjt 20

如果您可以使用基于任务的配置选项而不是grunt.option,那么这应该可以为您提供更精细的控制:

grunt.config.set('task.options.foo', 'bar');
Run Code Online (Sandbox Code Playgroud)


Nic*_*ner 12

看起来我可以使用以下内容:

grunt.option('foo', 'bar');
grunt.task.run('my-task');
Run Code Online (Sandbox Code Playgroud)

设置全局选项而不仅仅是针对该命令感觉有点奇怪,但它有效.


Ale*_*ato 7

创建一个设置该选项的新任务,然后调用修改后的任务.这是汇编的真实例子:

grunt.registerTask('build_prod', 'Build with production options', function () {
  grunt.config.set('assemble.options.production', true);
  grunt.task.run('build');
});
Run Code Online (Sandbox Code Playgroud)