关于npm update --save将package.json中~替换为^的技术咨询
为什么npm update --save会将~替换为^?
这是因为你使用的npm 9.5.1默认的版本范围前缀(save-prefix)为^,执行npm update --save时,npm会用当前默认前缀重写package.json中的依赖版本范围符号。
版本范围符号说明
~0.36.1:锁定主版本(0)和次版本(36),仅允许升级补丁版本(例如0.36.2、0.36.3)^0.36.1:由于主版本为0(属于语义化版本的预发布阶段),npm会将其等价于~0.36.1的范围,同样只允许补丁版本升级;若主版本≥1,^x.y.z则允许次版本和补丁版本升级(例如^1.2.3可升级至1.3.0)
npm save-prefix配置的影响
- npm的
save-prefix配置项决定了执行npm install --save或npm update --save时,写入package.json的版本范围前缀。 - 从npm 5版本开始,默认的
save-prefix就是^,你的npm 9.5.1沿用了这个默认设置。 - 执行
npm update --save时,npm不仅会将依赖包更新到符合原版本范围的最新版本,还会自动用当前默认前缀替换原有的版本范围符号,因此~被替换成了^。
如何保持原有前缀或自定义
- 若想始终使用
~作为版本前缀,可执行命令修改配置:npm config set save-prefix "~" - 若希望直接写入固定版本号而非范围符号,可在执行update时添加
--save-exact参数:npm update --save --save-exact
内容的提问来源于stack exchange,提问作者user657009
相关产品推荐
相关产品推荐

