I thought there was a way to do this, and that I'd stumbled on it before. I have read these answers but they're not what I'm talking about:
Programmatically pass arguments to grunt task?
Accessing the process / environment from a grunt template
I also looked at the grunt docs but it isn't there:
https://github.com/gruntjs/grunt/wiki/Configuring-tasks
Is there a syntax like this?
grunt.task.run 'htmlmin:allFiles:collapseWhitespace=true'
You can use that syntax but it means pass these arguments to the htmlmin task: allFiles
, 'collapse=true'
.
For example, given the following task:
grunt.registerTask('so', function(arg1, arg2) {
console.log(arg1 + ", " + arg2);
});
Running:
grunt so:barley:test=true
Gives the following output:
barley, test=true
There are other ways to pass parameters/share info described in the faq: How can I share parameters across multiple tasks?
--Options may be applicable to you
Another way to share a parameter across multiple tasks would be to use
grunt.option
. In this example, runninggrunt deploy --target=staging
on the command line would causegrunt.option('target')
to return "staging".