I am searching for a way to break the build, if a user is using a different node.js version as defined in the project.
Ideally to put some checks in grunt or bower or npm to stop, if a certain npm/node version is not used to run the current build.
I am searching for a way to break the build, if a user is using a different node.js version as defined in the project.
Ideally to put some checks in grunt or bower or npm to stop, if a certain npm/node version is not used to run the current build.
Even though engineStrict is deprecated, you can still accomplish this behavior without needing to use an additional script to enforce a Node version in your project.
Add the engines property to your package.json file. For example:
{ "name": "example", "version": "1.0.0", "engines": { "node": ">=14.0.0" } } Create a .npmrc file in your project at the same level as your package.json.
In the newly created .npmrc file, add engine-strict=true.
engine-strict=true This will enforce the engines you've defined when the user runs npm install. I've created a simple example on GitHub for your reference.
npm run (besides crafting manual checks)?You can use the "engineStrict" property in your package.json
Check the docs for more information: https://docs.npmjs.com/files/package.json
Update on 23rd June 2019
"engineStrict" property is removed in npm 3.0.0.
Reference : https://docs.npmjs.com/files/package.json#enginestrict
engineStrict has been deprecated, you should use you should use --engine-strict=true as an argument to npm in conjunction with the engines parameter in the package.jsonengine-strict=true in your .npmrc file to enforce it for the project."engineStrict" has been removed and "engines" only works for dependencies. If you want to check Node's runtime version this can work for you:
You call this function in your server side code. It uses a regex to check Node's runtime version using eremzeit's response It will throw an error if it's not using the appropriate version:
const checkNodeVersion = version => { const versionRegex = new RegExp(`^${version}\\..*`); const versionCorrect = process.versions.node.match(versionRegex); if (!versionCorrect) { throw Error( `Running on wrong Nodejs version. Please upgrade the node runtime to version ${version}` ); } }; usage:
checkNodeVersion(8) If you want to enforce a specific version of npm, you might use: https://github.com/hansl/npm-enforce-version
If you want to enforce a version of node when executing you can read the version of node that is currently running by checking against:
process.versions
For more info: https://nodejs.org/api/process.html#process_process_versions