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的命令其实是非常多的:
更多的命令,可以根据需要查阅官方文档
npm其他命令
npm uninstall package
npm uninstall package --save-dev
npm uninstall package -D
npm rebuild 开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 30 天,点击查看活动详情