Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Executing Shell commands synchronously with grunt!
JavaScript CoffeeScript
Pull request Compare This branch is 4 commits ahead, 43 commits behind master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Executing Shell commands with grunt.

Getting Started

If you haven't used grunt before, be sure to check out the Getting Started guide.

From the same directory as your project's Gruntfile and package.json, install this plugin with the following command:

npm install grunt-wxi-shell --save-dev

Once that's done, add this line to your project's Gruntfile:


If the plugin has been installed correctly, running grunt --help at the command line should list the newly-installed plugin's task or tasks. In addition, the plugin should be listed in package.json as a devDependency, which ensures that it will be installed whenever the npm install command is run.

The "wxi_shell" task


In your project's Gruntfile, add a section named wxi_shell to the data object passed into grunt.initConfig().

  wxi_shell: {
    options: {
      // Task-specific options go here.
    your_target: {
      // Target-specific file lists and/or options go here.



Type: String Default value: null

The working directory, runs commands in that directory.

Usage Examples

Let's say you wanted to build bootstrap

If you specify cwd then the commands are run as cd "your/directory" && ls if you dont' then they are run in the project root.

The syntax for commands are like this:

"Command or text" : "type"

If you want to execute a command then type is run, if you want to send a message to the terminal then you have three choices:

  • ok - green message with a tick
  • info - blue message with a square bullet
  • err - red message with a triangle

These messages are automatically formatted and echoed.

          cwd: 'components/bootstrap'
          "[Bootstrap] First stage: make": "info" 
          "make" : "run"
          "[Bootstrap] First stage done: make" : "ok" 
          "[Bootstrap] Second stage: make bootstrap": "info" 
          "make bootstrap" : "run" 
          "[Bootstrap] Second stage done: make bootstrap" : "ok" 
          "[Bootstrap] Done making! But we have never thrown an error!" : "err"  


In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.

Release History


  • Wrote the basics of the task. It successfully executes shell commands.
  • I should note that the method I'm using right now is temporary... It was good when I was using grunt-shell however I couldn't do the same thing when defining config dynamically. This method saves stuff to a file and then gets it back which I don't like. Need to fix this.
Something went wrong with that request. Please try again.