Demand a Node or npm version to run your app.
- Fail fast with a friendly message.
- Get semver satisfaction between the expected and actual versions.
- Provide expected versions at runtime or via package.json.
- Provide actual versions at runtime, if you know them already.
npm install test-engine --saveGet it into your program.
const testEngine = require('test-engine');Ask whether the current Node and/or npm in use are acceptable based on the engines in your package.json.
testEngine().then((satisfied) => {
if (!satisfied) {
console.error('Hey Jane! Update your Node.');
}
});If you want to override the expectations of your package.json, you can.
testEngine({ npm : '2.x' }).then((satisfied) => {
// true if on any version of npm 2
console.log(satisfied);
});If you happen to know the user's engines, you may provide them. This is particularly good for npm, because its version must be determined via the filesystem.
testEngine({ npm : '2.x' }, { npm : '3.0.0' })
.then((satisfied) => {
console.log(satisfied); // => false
});Ask for a more detailed report.
testEngine(null, null, { detail : true })
.then(console.log);
// {
// allSatisfied : true,
// satisfied : {
// npm : { actual : '4.0.0', expected : '>=4' }
// }
// }You can register a handler that will only run when the user has compatible engines. If they do not match according to semver, the promise will be rejected.
testEngine.assert().then(() => {
// Do anything. User is gauranteed to have compatible engines.
console.log('Hey Jane! You are good to go.');
});Returns a Promise for a report of whether the known engines satisfy the wanted engines.
Same as testEngine() with the detail option set to true.
Returns a Promise for a detailed report asserting that the wanted engines are satisfied. If they are not, the promise is rejected with an error whose engine field has the report.
Type: string or object
Default: process.cwd()
A path to start a find-up search for a package.json with an engines field. Or an explicit object of the same form as the engines field.
Type: object
An object of key/value pairs for engine names and their respective versions to compare against wanted. Fields for node and npm will be filled in if necessary according to the engines in wanted. However, they can be provided here as overrides.
Type: object
Settings for how to report the result.
Type: boolean
Default: false
Report the result as an object with individual fields for each engine rather than a simple boolean.
Example:
{
allSatisfied : false,
satisfied : {
npm : { actual : '4.0.0', expected : '>=4' }
},
notSatisfied : {
node : { actual : '7.0.0', expected : '>=8' }
}
}See our contributing guidelines for more details.
- Fork it.
- Make a feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request.
Go make something, dang it.