Pass Options to a grunt task while running it

SimplGy picture SimplGy · Sep 4, 2013 · Viewed 30.6k times · Source

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?

Grunt conditional option

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'

Answer

dc5 picture dc5 · Sep 4, 2013

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, running grunt deploy --target=staging on the command line would cause grunt.option('target') to return "staging".