输入npm i 后 npm干了些什么

npm 包更新机制

语义化版本1更新机制
^1.2.3 版本兼容 会更新到1.2.32.0.0之间的版本,不包含2.0.0
~1.2.3 大致相当于同一个版本 会更新到1.2.31.3.0之间的版本,不包含1.3.0
1.2.3 确定版本 只会下载1.2.3版本

npm i输入后的包更新顺序

  1. 从项目package.lock.json中查看依赖版本的integrity属性,比对是否跟本地版本一致
    如果一致,就跳过这个包的安装
  2. 如果不一致走3
  3. 参考package.json中包的版本,然后根据语义化版本更新机制,去下载合适的新版本
  4. 更新package.lock.json配置
  5. 如果依赖包的版本有更新,我们在新下载到的依赖包的package.json中会看到两个字段
    fromidfrom就标识我们项目文件中配置的包版本,id标识当前下载到的包版本
  6. 语义化版本不会跟新到大版本,需要手动更新
  7. npm i xxx@2.0.0 或者 npm i xxx@latest 会更新到大版本,同时修改项目package.json中的依赖包版本
  8. 项目中新安装到的依赖包版本,默认都会以^开头
  9. package.lock.json中会锁定项目依赖包中的依赖包的具体版本,
    但是不会锁定项目中依赖包的依赖包的依赖包的。。。的具体版本
    后半句会牵出一个问题:
    就是npm是怎么解决在循环依赖中多个包依赖于同一个包的不同版本,下载哪个版本的问题?

  1. https://editor.csdn.net/md/?articleId=106922681 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值