package.json 中~和^是什么意思
-
^意思是将当前库的版本更新到第一个数字,例:"^4.1.0"是库会更新到4.X.X的最新版本,但不会更新到5.X.X版本。 -
~意思是更新到中间数字的版本,例:"~4.7.4"是库会更新到4.7.X的最新版本,但不会更新到4.8.X版本。 -
锁定版本:去掉^或~ 写死版本号
老项目维护
- 维护很久前的项目,下载依赖后可能会出现各种莫名其妙的报错,可以将出现问题的依赖,写死版本号,重新下载依赖
- 可以在 package.json 中设置 engines 字段,并为 node 或 npm 设置要求版本或两者
"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"
}
}
本文解释了package.json中的^和~版本符号含义,以及在老项目维护中如何锁定特定版本或设置engines字段来确保兼容性。还介绍了.npmrc文件和engine-strict选项的作用,用于强制执行特定的npm和node版本要求。
308

被折叠的 条评论
为什么被折叠?



