I have a Node.js project that requires Node version 12 or higher. Is there a way to specify this in the packages.json
file, so that the installer will automatically check and inform the users if they need to upgrade?
6 s
You can set the engines
field in your package.json
and set requirements for either node
or npm
versions or both:
"engines" : {
"npm" : ">=7.0.0",
"node" : ">=16.0.0"
}
To enforce this via npm you need to create an .npmrc
file (and commit it to the repository) and set the engines-strict
option to true
, which will cause npm commands such as npm install
to fail if the required engine versions to not match:
# .npmrc
engine-strict=true
Without that file, every developer will need to run npm config set engine-strict true
in their local workspace to switch on this option.
Original
As you’re saying your code definitely won’t work with any lower versions, you probably want the “engineStrict” flag too:
{ "engineStrict" : true }
Documentation for the package.json file can be found on the npmjs site
Update
engineStrict
is now deprecated, so this will only give a warning. It’s now down to the user to run npm config set engine-strict true
if they want this.
Update 2
As ben pointed out below, creating a .npmrc
file at the root of your project (the same level as your package.json file) with the text engine-strict=true
will force an error during installation if the Node version is not compatible.