JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 52
  • Score
    100M100P100Q69784F
  • License MIT

Spawn a new process using `stack` command with the given arguments

Package Exports

  • spawn-stack

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (spawn-stack) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

spawn-stack

NPM version Build Status Build status Coverage Status

Spawn a new process using stack command with the given arguments

const spawnStack = require('spawn-stack');

spawnStack(['--version']).then(result => {
  result.output; //=> 'Version 1.5.0 x86_64 hpack-0.17.1'
});

Installation

Make sure stack command is installed in your $PATH, then install spawn-stack via npm CLI.

npm install spawn-stack

API

const spawnStack = require('spawn-stack');

spawnStack(args [, options])

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 a Promise for a result Object with stdout and stderr 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.0.2']);

Observable.from(cp).subscribe({
  next(line) {
    console.log(line);
    // stack will use a sandboxed GHC it installed ...
  },
  complete() {
    console.log('Done.')
  }
});

License

Copyright (c) 2017 Shinnosuke Watanabe

Licensed under the MIT License.