Package Exports
- @cspotcode/cross-spawn
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 (@cspotcode/cross-spawn) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@cspotcode/cross-spawn
This is a proof-of-concept fork of cross-spawn while I wait for a fix to be merged upstream.
A cross platform solution to node's spawn and spawnSync.
Installation
$ npm install @cspotcode/cross-spawn
If you are using spawnSync on node 0.10 or older, you will also need to install spawn-sync:
$ npm install spawn-sync
Why
Node has issues when using spawn on Windows:
- It ignores PATHEXT
- It does not support shebangs
- No
options.shellsupport on node<v4.8 - It does not allow you to run
delordir
All these issues are handled correctly by cross-spawn.
There are some known modules, such as win-spawn, that try to solve this but they are either broken or provide faulty escaping of shell arguments.
Usage
Exactly the same way as node's spawn or spawnSync, so it's a drop in replacement.
var spawn = require('@cspotcode/cross-spawn');
// Spawn NPM asynchronously
var child = spawn('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
// Spawn NPM synchronously
var results = spawn.sync('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });Caveats
options.shell as an alternative to @cspotcode/cross-spawn
Starting from node v4.8, spawn has a shell option that allows you run commands from within a shell. This new option solves most of the problems that @cspotcode/cross-spawn attempts to solve, but:
- It's not supported in node
<v4.8 - It has no support for shebangs on Windows
- You must manually escape the command and arguments which is very error prone, specially when passing user input
If you are using the shell option to spawn a command in a cross platform way, consider using @cspotcode/cross-spawn instead. You have been warned.
Shebangs
While @cspotcode/cross-spawn handles shebangs on Windows, its support is limited: e.g.: it doesn't handle arguments after the path, e.g.: #!/bin/bash -e.
Remember to always test your code on Windows!
Tests
$ npm test
License
Released under the MIT License.