参考:bbs.huaweicloud.com/blogs/34890…
运行npm install命令的时候会发生什么可以参考上面的文章,下面是我在读这篇文章后小不懂的地方(package-lock.json文件中requires和dependencies都是装子依赖有何不同呢?),查阅后记录下来了,如有同样问题,可以参考下面的内容
package-lock.json文件
- version:包版本
- resolved:包具体的安装来源
- integrity:包的hash值
- requires:对应子依赖的依赖
- dependencies:如果一个包A在dependencies中,那这个包A也一定在同级requires中,但是存在requires中的包不一定在同级的dependencies中,但一定在根级的dependencies中,这是因为两个包X、Y都依赖了包A,但是依赖的大版本不一样。例如:X依赖A-1.2.2,而Y依赖了包A-2.2.2,此时不能只安装A包的2版本,所以此时将A包的1版本安装到X下即X的dependencies中和X的requires中有A包1版本的信息,而A包2版本会被安装到根目录下,即根目录的dependencies中会有A包2版本信息,同时Y包的requires会有A包2版本信息。当然,如果两个包X、Y都依赖了包A,但是依赖的大版本一样。例如:X依赖A-1.2.2,而Y依赖了包A-1.3.2,此时只安装A包符合1.x.x形式的最新版本即可