包管理工具详解(四)

99 阅读2分钟

npm install 原理图解析

npm install会检测是有package-lock.json文件:

 没有lock文件

✓ 分析依赖关系,这是因为我们可能包会依赖其他的包,并且多个包之间会产生相同依赖的情况;

✓ 从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包);

✓ 获取到压缩包后会对压缩包进行缓存(从npm5开始有的);

✓ 将压缩包解压到项目的node_modules文件夹中(前面我们讲过,require的查找顺序会在该包下面查找)

 有lock文件

✓ 检测lock中包的版本是否和package.json中一致(会按照semver版本规范检测);

➢ 不一致,那么会重新构建依赖关系,直接会走顶层的流程;

✓ 一致的情况下,会去优先查找缓存

➢ 没有找到,会从registry仓库下载,直接走顶层流程;

✓ 查找到,会获取缓存中的压缩文件,并且将压缩文件解压到node_modules文件夹中;

package-lock.json

◼ package-lock.json文件解析:

◼ name:项目的名称;

◼ version:项目的版本;

◼ lockfileVersion:lock文件的版本;

◼ requires:使用requires来跟踪模块的依赖关系;

◼ dependencies:项目的依赖

 当前项目依赖axios,但是axios依赖follow-redireacts;

 axios中的属性如下:

✓ version表示实际安装的axios的版本;

✓ resolved用来记录下载的地址,registry仓库中的位置;

✓ requires/dependencies记录当前模块的依赖;

✓ integrity用来从缓存中获取索引,再通过索引去获取压缩包文件;

卸载某个依赖包: npm uninstall package

npm uninstall package --save-dev

npm uninstall package -D

◼ 强制重新build npm rebuild

◼ 清除缓存 npm cache clean

◼ npm的命令其实是非常多的:

docs.npmjs.com/cli-documen…

 更多的命令,可以根据需要查阅官方文档

npm其他命令

npm uninstall package

npm uninstall package --save-dev

npm uninstall package -D

npm rebuild 开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 30 天,点击查看活动详情