依赖版本范围与更新策略
版本范围决定了安装哪个版本,理解语法才能精准控制依赖版本。
依赖版本范围语法
精确版本
JSON
{
"dependencies": {
"lodash": "4.17.21"
}
}
只安装4.17.21,不接受任何其他版本。
波浪号~(允许补丁版本变更)
JSON
{
"lodash": "~4.17.21"
}
匹配>=4.17.21 <4.18.0,即允许补丁号变更。
插入号^(允许次版本变更)
JSON
{
"lodash": "^4.17.21"
}
匹配>=4.17.21 <5.0.0,即允许次版本和补丁版本变更。
其他范围写法
| 写法 | 含义 |
|---|---|
>=4.0.0 <5.0.0 | 区间范围 |
1.2.x | 1.2的任意补丁版本 |
* | 任意版本 |
latest | 最新发布版本 |
npm install默认使用^前缀,意味着安装后可能获得次版本更新。若需严格锁定版本,应使用精确版本号。
npm update更新依赖
更新规则
Bash
# 更新所有依赖(在版本范围内)
npm update
# 更新指定包
npm update lodash
npm update只更新到package.json声明的版本范围内最新版本。例如^4.17.21可更新到4.17.latest,但不会到5.0.0。
查看可更新的包
Bash
# 查看哪些包有新版本
npm outdated
输出示例:
Bash
Package Current Wanted Latest Location
lodash 4.17.21 4.17.21 5.0.0 node_modules/lodash
- Current:当前安装版本
- Wanted:版本范围内最新版本
- Latest:最新发布版本
跨主版本更新
text
# npm update无法跨主版本,需手动指定
npm install lodash@5.0.0
跨主版本更新可能引入不兼容变更,务必查看CHANGELOG并充分测试后再升级。
要点总结
^允许次版本变更,~仅允许补丁变更,精确版本最严格npm update只更新到版本范围内的最新版本,不跨主版本npm outdated可查看当前版本、范围最新版本和全局最新版本- 跨主版本升级需手动
npm install <pkg>@<version>并验证兼容性