grunt-wxi-shell

Executing Shell commands with grunt.

grunt-wxi-shell

Executing Shell commands with grunt.

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:

grunt.loadNpmTasks('grunt-wxi-shell');

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.

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

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.

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.

    wxi_shell:
      bootstrap:
        options: 
          cwd: 'components/bootstrap'
        commands:
          "[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.

  • 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.
  • The method I mentioned is good for build tasks. But not good for usual server side stuff.