npm 包更新机制
语义化版本1更新机制
^1.2.3
版本兼容 会更新到1.2.3
到2.0.0
之间的版本,不包含2.0.0
~1.2.3
大致相当于同一个版本 会更新到1.2.3
到1.3.0
之间的版本,不包含1.3.0
1.2.3
确定版本 只会下载1.2.3版本
npm i
输入后的包更新顺序
- 从项目
package.lock.json
中查看依赖版本的integrity
属性,比对是否跟本地版本一致
如果一致,就跳过这个包的安装 - 如果不一致走3
- 参考
package.json
中包的版本,然后根据语义化版本更新机制,去下载合适的新版本 - 更新
package.lock.json
配置 - 如果依赖包的版本有更新,我们在新下载到的依赖包的
package.json
中会看到两个字段
from
和id
,from
就标识我们项目文件中配置的包版本,id
标识当前下载到的包版本 - 语义化版本不会跟新到大版本,需要手动更新
npm i xxx@2.0.0
或者npm i xxx@latest
会更新到大版本,同时修改项目package.json
中的依赖包版本- 项目中新安装到的依赖包版本,默认都会以
^
开头 - package.lock.json中会锁定项目依赖包中的依赖包的具体版本,
但是不会锁定项目中依赖包的依赖包的依赖包的。。。的具体版本
后半句会牵出一个问题:
就是npm是怎么解决在循环依赖中多个包依赖于同一个包的不同版本,下载哪个版本的问题?
https://editor.csdn.net/md/?articleId=106922681 ↩︎