^意思是将当前库的版本更新到第一个数字,例:"^4.1.0"是库会更新到4.X.X的最新版本,但不会更新到5.X.X版本。
~意思是更新到中间数字的版本,例:"~4.7.4"是库会更新到4.7.X的最新版本,但不会更新到4.8.X版本。
锁定版本:去掉^或~ 写死版本号
"engines" : {
"npm" : ">=8.0.0 <9.0.0",
"node" : ">=16.0.0 <17.0.0"
}
要通过 npm 强制执行此操作,您需要创建一个 .npmrc 文件(并将其提交到存储库)并将 engines-strict 选项设置为 true ,如果所需的引擎版本不匹配,这将导致诸如 npm install 之类的 npm 命令失败:
# .npmrc
engine-strict=true
如果没有该文件,每个开发人员都需要在其本地工作区中运行 npm config set engine-strict true 以打开此选项
eg:
{
"name": "my package",
"engines": {
"node": ">=12.19.1" // intentionally so big version number
},
"scripts": {
"requirements-check": "babel-node check-version.js",
"postinstall": "npm run requirements-check"
}
}