Socket
Socket
Sign inDemoInstall

cross-spawn

Package Overview
Dependencies
5
Maintainers
1
Versions
54
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    cross-spawn

Cross platform child_process#spawn and child_process#spawnSync


Version published
Weekly downloads
70M
increased by0.55%
Maintainers
1
Install size
77.0 kB
Created
Weekly downloads
 

Package description

What is cross-spawn?

The cross-spawn npm package is a cross-platform solution for spawning child processes in Node.js. It aims to resolve issues with spawning commands across different operating systems, particularly Windows, where the built-in child_process.spawn can behave inconsistently. It provides a consistent API for spawning processes and handling their output, errors, and exit codes.

What are cross-spawn's main functionalities?

Spawning a child process

This feature allows you to spawn a child process, similar to child_process.spawn, but with improved cross-platform support. The code sample demonstrates how to spawn an 'npm install' process and listen for its exit event.

const spawn = require('cross-spawn');
const child = spawn('npm', ['install']);
child.on('exit', function (code, signal) {
  console.log('Child process exited with code ' + code);
});

Spawning a synchronous child process

This feature allows you to spawn a child process and wait for it to finish synchronously, returning the result. The code sample demonstrates how to synchronously spawn an 'npm install' process and log the exit code.

const spawnSync = require('cross-spawn').sync;
const result = spawnSync('npm', ['install'], { stdio: 'inherit' });
console.log('Child process exited with code ' + result.status);

Handling command-line arguments properly

This feature ensures that command-line arguments are handled properly across different platforms. The code sample demonstrates how to spawn an 'echo' command with arguments and handle the standard output.

const spawn = require('cross-spawn');
const child = spawn('echo', ['Hello World!'], { shell: true });
child.stdout.on('data', function (data) {
  console.log('stdout: ' + data.toString());
});

Other packages similar to cross-spawn

Changelog

Source

5.0.0 (2016-10-30)

Features

  • add support for options.shell
  • improve parsing of shebangs by using shebang-command module

Chores

  • refactor some code to make it more clear
  • update README caveats

Readme

Source

cross-spawn

NPM version Downloads Build Status Build status Dependency status Dev Dependency status

A cross platform solution to node's spawn and spawnSync.

Installation

$ npm install 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
  • It does not allow you to run del or dir
  • It does not properly escape arguments with spaces or special characters

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('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' });

Caveat

On Windows, cross-spawn will only spawn cmd.exe if necessary. If the extension of the executable is .exe or .com, it will spawn it directly. If you wish to override this behavior and always spawn a shell, pass the {shell: true} option.

Tests

$ npm test

License

Released under the MIT License.

Keywords

FAQs

Last updated on 25 Sep 2016

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc