Run a script across multiple versions of an npm package
$ npm install --save run-versions
var run = require('run-versions')
run({
name: 'xtend',
command: 'npm ls xtend',
versions: ['3.0.0', '4.0.0']
}, done)
//=> done(null, [{version: '3.0.0', passed: true}, {version: '4.0.0', passed: true}])
Iterates through the supplied versions, running the specified shell command at each version. For details on events, see the events documentation.
Required
Type: object
Configuration objects for the runner:
Required
Type: string
The name of the package to install.
Required
Type: string
The command to run on each version.
Required
Type: array[string]
Versions to install and run against.
Type: boolean
Default: false
Set to true
to treat the command as an npm script.
Type: object
Default: {}
Options to pass to spawned child processes.
Type: boolean
Default: false
Call the callback immediately with an error if any test fails.
Required
Type: function
Arguments: err, results
A callback to be called when the run completes. Installation errors are considered fatal, while test errors are only fatal when options.bail
is set.
Type: array[object]
An array of objects with properties version (string) and passed (boolean) indicating test results.
A script runner is an EventEmitter
and emits various events during its lifecycle. These events are:
- preinstall
- postinstall
- prescript
- postscript
- result
- preuninstall
- postuninstall
All events receive the current version as the first argument. pre events receive the child process used to execute the installation/script/uninstallation as the second argument. The result event receives the test result (pass/fail) as the second argument. post events receive only one argument.
run(config, callback)
.on('postinstall', function (version) {
console.log('Installed', version)
})
.on('prescript', function (version, child) {
child.stdout.pipe(process.stdout)
})
Note that you can use {stdio: 'inherit'}
in the child_process
option if you'd prefer to pass through all output (install and uninstall logs), not just the script.
MIT © Ben Drucker