Use npm-run
to ensure you're using the same version of a package on the command-line and in package.json scripts.
Any executable available to an npm lifecycle script is available to npm-run
.
> npm install mocha # mocha installed in ./node_modules
> npm-run mocha test/* # uses locally installed mocha executable
> npm-run --help
Usage: npm-run command [...args]
Options:
--version Display version & exit.
--help Display this help & exit.
Hint: to print augmented path use:
npm-run node -p process.env.PATH
> npm install -g npm-run
The API of npm-run
basically wraps core child_process
methods (exec, spawn, etc) such that locally install package executables will be on the PATH when the command runs.
Alias of npmRun.exec.
Takes same arguments as node's exec.
npmRun.exec('mocha --debug-brk --sort', {cwd: __dirname + '/tests'}, function (err, stdout, stderr) {
// err Error or null if there was no error
// stdout Buffer|String
// stderr Buffer|String
})
Alias of npmRun.execSync
Takes same arguments as node's execSync.
var stdout = npmRun.execSync(
'mocha --debug-brk --sort',
{cwd: __dirname + '/tests'}
)
stdout // command output as Buffer|String
Takes same arguments as node's spawnSync.
var child = npmRun.spawnSync(
'mocha',
'--debug-brk --sort'.split(' '),
{cwd: __dirname + '/tests'}
)
child.stdout // stdout Buffer|String
child.stderr // stderr Buffer|String
child.status // exit code
Takes same arguments as node's spawn.
var child = npmRun.spawn(
'mocha',
'--debug-brk --sort'.split(' '),
{cwd: __dirname + '/tests'}
)
child.stdout // stdout Stream
child.stderr // stderr Stream
child.on('exit', function (code) {
code // exit code
})
Due to npm's install algorithm node_modules/.bin
is not guaranteed to contain your executable. npm-run
uses the same mechanism npm uses to locate the correct executable.
MIT