Flexible and cross-platform executing commands. Hybrid, Async and Promise API.
npm i exec-cmd --save
npm test
For more use-cases see the tests
Hybrid execute command via spawn. Actually this is hybridify wrapper for async-exec-cmd, so for more detailed information see async-exec-cmd readme
<cmd>
{String} command to execute[args]
{Array} sub-commands or flags, you also can pass them tocmd
[opts]
{Object} options to pass to cross-spawn and child_process.spawn[cb]
{Function} optional node style callbackreturns
{Promise}
Example:
The command will directly output
"Hello world!"
, becausestdio: inherit
, sores[0]
which is the actual response of execution, will be empty string''
.
var run = require('exec-cmd')
var promise = run('echo "Hello world!"', {stdio: 'inherit'})
promise
.then(function(res) {
var stdout = res[0]
var code = res[1]
var buffer = res[2]
console.log(stdout, code, buffer)
//=> '' 0 <Buffer >
})
.catch(console.error)
More advanced example
Say we want to install bluebird as dev dependency and after that uninstall it.
var run = require('exec-cmd');
run('npm install', ['--save-dev', 'bluebird'])
.then(function(arr) {
var res = arr[0];
var code = arr[1];
var buffer = arr[2];
console.log(res);
//=> 'bluebird@2.9.3 node_modules/bluebird'
// So we now want to uninstall it,
// but we want to show response directly on console (stdout)
return run('npm', ['uninstall', '--save-dev', 'bluebird'], {stdio: 'inherit'})
})
.then(function(arr) {
// not need to console.log something,
// it will directly output this
//=> unbuild bluebird@2.9.3
})
.catch(console.error)
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
But before doing anything, please read the CONTRIBUTING.md guidelines.