了解一下npm i的流程与原理

流程

执行npm install,先判断有无lock文件。

1、没有lock文件。会先根据依赖构建出扁平的依赖关系决定下哪些包。新版本的依赖关系是扁平化的,老版本是树结构,可能会出现依赖重复安装的问题,老版本示意图如下:

 

新版本示意如下:

        构建出依赖关系会进入下包的操作。下包时会先去找缓存,缓存有符合条件的版本就直接用,没有就去registry仓库下载压缩包,然后将压缩包添加到缓存并解压到node_modules中,完成安装,最后会生成lock文件(指定一个确定的版本)。

        2、有lock文件,先检查依赖的一致性,即lock的当前版本是否符合依赖的版本要求,比如package.json的版本要求是~4.2.3,但是lock的版本是4.1.5,这样次版本就不符合要求,需要重新构建依赖关系后再下包,在下包时同样要先检查缓存。如果lock的版本符合要求就直接进行下包(也是先用缓存)的流程。

流程图如下:

版本号规则

        比如:^x.y.z  其中x代表主版本,不一定兼容上一版本;y代表次版本;z代表修订版本,做一些小的需求更改。其中^代表主版本不变,次版本和修订版本用最新的。

        ~x.y.z则是代表修订版本用最新的,主次版本不变。

最后

        在代码提交时,最好把lock文件也提交了。lock文件为我们提供一个确定的版本号,在下载包时,npm也会优先去找缓存。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值