2.3.3 • Published 10 years ago
grunt-bg-shell v2.3.3
grunt-bg-shell
Improve your workflow by running commands in the background and in parallel using Grunt.
Getting Started
Note: This plugin requires Grunt >=0.4.0
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-bg-shell --save-devThen add the task to your Gruntfile.js with this line:
grunt.loadNpmTasks('grunt-bg-shell');Sample Usage
For example, say you want to run your node server and also compile coffeescript and sass/scss files all in the same terminal. You could acheive that with the following config:
module.exports = function (grunt) {
grunt.initConfig({
bgShell: {
_defaults: {
bg: true
},
watchCompass: {
cmd: 'compass watch'
},
watchCoffee: {
cmd: 'coffee --watch --output lib/ src/'
},
runNode: {
cmd: 'node server.js',
bg: false
}
}
});
grunt.registerTask('default', ['bgShell:watchCompass','bgShell:watchCoffee','bgShell:runNode']);
};Available Options
bgShell: {
lsTasks: {
cmd: 'ls -la', // or function(){return 'ls -la'}
execOpts: {
cwd: './tasks'
},
stdout: true,
stderr: true,
bg: false,
fail: false,
done: function(){}
}
}cmd: command to execute orfunction(){}that returns a command to executeexecOpts: options forchild_process.exec. IfexecOpts.maxBufferset tofalse,0,NaNorInfiniteit won't buffer stdout and stderr fordonecallbackstdout:true,falseorfunction(out){}stderr:true,falseorfunction(err){}bg: background executionfail: fail grunt on errordone: callback after executionfunction(err, stdout, stderr){}
Default Options
bgShell: {
_defaults: {
execOpts: {},
stdout: true,
stderr: true,
bg: false,
fail: false,
done: function (err, stdout, stderr) {
}
},
}Troubleshooting
If you get
Error: stdout maxBuffer exceededYou should set execOpts.maxBuffer to false. But you won't get stdout and strerr in done callback
Example:
bgShell: {
lsTasks: {
cmd: 'ls -la',
execOpts: {
maxBuffer: false
},
stdout: function(chunk){
// process your stdout chunk
},
stderr: function(chunk){
// process your stderr chunk
},
done: function (err, stdout, stderr) {
// stdout === null
// stderr === null
}
}
}