This module is not maintained anymore.
Execute your long-running app and pipe its output somewhere else.
You have a long running app and you want its output to be processed by another utility. For example, your Node.js app uses Bunyan for logging, you want the output to be pretty-printed. I.e. to pipe the output of your app to Bunyan.
Existing Grunt plugins use two approaches:
- Using
child_process.exec()allows to easily pipe commands but will terminate your app once its buffer gets full. Not a solution for long running apps. - Using
child_process.spawn()fixes the buffer issue but does not allow easy piping.
This plugin is here to allow you to spawn processes and pipe them together.
This plugin requires Grunt ~1.0.1 and was tested on OS X operating system.
Install the plugin:
npm install grunt-spawn-pipe --save-dev
Once the plugin is installed, enable it inside your Gruntfile:
grunt.loadNpmTasks('grunt-spawn-pipe');Run this task with the grunt spawnPipe command.
The options you set are passed over to every call to Node's spawn() function.
Read Node doc for more details on which options you can set.
module.exports = function(grunt) {
grunt.initConfig({
spawnPipe: {
ls: {
options: {
cwd: '/'
},
commands: [
{cmd: 'ls', args: ['-la']},
{cmd: 'grep', args: ['etc']}
]
},
startDev: {
commands: [
{cmd: 'node', args: ['src/index.js']},
{cmd: 'bunyan', args: ['-o', 'short', '--color']}
]
}
}
});
grunt.loadNpmTasks('grunt-spawn-pipe');
}options and args properties are optional. The rest is mandatory.
- The plugin pipes
stdoutof the first command tostdinof the second command and so on. - All
stderrs are piped tostderrof the process executing the spawn commands. stdoutof the last command is piped tostdoutof the process executing the spawn commands.
If an error occurs in any of the command, for example because of a typo in command name, the first command is killed to ensure the whole piped chain gets terminated.
process.cwd and process.env are used as defaults for all spawn() calls. You can override these values in task options.