Spawn a new process using stack
command with the given arguments
const spawnStack = require('spawn-stack');
spawnStack(['--version']).then(result => {
result.output; //=> 'Version 1.7.1 x86_64 ...'
});
Make sure stack
command is installed in your $PATH
, then install spawn-stack
via npm CLI.
npm install spawn-stack
const spawnStack = require('spawn-stack');
args: Array<string>
(command line arguments passed to stack
command)
options: Object
(execa
options, with preferLocal
defaulting to false
)
Return: ChildProcess
It returns the same value as execa
's:
a
child_process
instance, which is enhanced to also be aPromise
for a resultObject
withstdout
andstderr
properties.
On POSIX, --allow-different-user
flag will be automatically enabled to prevent file permission problems, unless --no-allow-different-user
flag is explicitly provided.
process.platform !== 'win32'; //=> true
spawnStack(['--numeric-version']).then(result => {
result.cmd; // 'stack --allow-different-user --numeric-version'
});
spawnStack(['--no-allow-different-user', '--numeric-version']).then(result => {
result.cmd; // 'stack --no-allow-different-user --numeric-version'
});
The return value also has Symbol.observable
method that returns a zen-observable instance passing each line of stderr
to its Subscription
. That means you can convert the return value into an Observable
by using Observable.from
.
const Observable = require('zen-observable');
const spawnStack = require('spawn-stack');
const cp = spawnStack(['setup', '8.2.1']);
Observable.from(cp).subscribe({
next(line) {
console.log(line);
// stack will use a sandboxed GHC it installed ...
},
complete() {
console.log('Done.')
}
});
ISC License © 2017 - 2018 Shinnosuke Watanabe