У меня фактически была ситуация, когда мне нужно было запускать несколько команд одну за другой из сценария предварительной установки package.json таким образом, чтобы он работал как в Windows, так и в Linux / OSX, поэтому я не мог полагаться на неосновные модуль.
Так вот что я придумал:
#cmds.coffee
childproc = require 'child_process'
exports.exec = (cmds) ->
next = ->
if cmds.length > 0
cmd = cmds.shift()
console.log "Running command: #{cmd}"
childproc.exec cmd, (err, stdout, stderr) ->
if err? then console.log err
if stdout? then console.log stdout
if stderr? then console.log stderr
next()
else
console.log "Done executing commands."
console.log "Running the follows commands:"
console.log cmds
next()
Вы можете использовать его так:
require('./cmds').exec ['grunt coffee', 'nodeunit test/tls-config.js']
РЕДАКТИРОВАТЬ: как указывалось, это на самом деле не возвращает вывод или позволяет использовать результат команд в программе Node. Еще одна идея для этого заключается в использовании обратных вызовов LiveScript. http://livescript.net/