优化 npm 安装速度的 6 个技巧
引言
当项目依赖的包数量较多时,npm 需要下载和安装大量的文件,导致安装时间显著增加。尤其是对于大型项目,node_modules
目录可能包含成千上万个文件,安装过程耗时较长。npm 默认从官方源(https://registry.npmjs.org
)下载依赖包,对于国内开发者来说,由于网络延迟或限制,下载速度可能非常慢,甚至失败。
本文将通过多个手段,帮助大家提升 npm 的下载速度。
为什么 npm 安装速度慢?
网络问题:npm 默认从官方源下载依赖,国内用户可能因网络问题导致下载速度慢。
依赖数量多:项目依赖的包越多,安装时间越长。
缓存未充分利用:npm 的缓存机制未被有效利用。
锁文件冲突:
package-lock.json
或yarn.lock
文件冲突可能导致重复安装。
优化方法
1. 使用国内镜像源
通过设置国内镜像,提高下载速度。最常用的就是淘宝镜像 https://registry.npmmirror.com
设置镜像源的方法有两种:
- 通过命令行设置 registry
npm config set registry https://registry.npmmirror.com
- 直接写到配置文件
.npmrc
中,这么做的好处是,其他人会默认使用淘宝镜像
registry="https://registry.npmmirror.com"
2. 使用缓存
npm 在安装完 package 之后,会缓存在 ~/.npm (macOS)目录下,下次安装,npm 默认会先走缓存,没有的包才会通过网络请求。如果需要强制走缓存,可以添加 --prefer-offline
后缀。
npm install --prefer-offline
3. 并行下载
npm 从 7.0.0 版本 开始支持并行下载依赖包,npm 7.0.0 对应的 Node.js 版本是 15.0.0,因此如果你使用的是 Node.js 15.0.0 或更高版本,npm 将默认支持并行下载。
升级 npm 可以运行
npm install -g npm@latest
由于 npm 和 nodejs 是配套的,建议还是升级nodejs版本。nodejs 版本管理可以参考:https://webfem.com/post/nvm
4. 减少依赖数量
分析项目依赖,移除不必要的包。
使用
npm dedupe
减少重复依赖。使用工具(如
depcheck
)检测未使用的依赖。
5. 跳过可选依赖的安装
npm 的可选依赖(optionalDependencies
)是指在项目中声明的一些依赖项,这些依赖项并不是项目运行所必需的。
例如,fsevents
是一个仅在 macOS 上可用的文件系统事件监控库。在跨平台项目中,可以将 fsevents
声明为可选依赖,这样在其他操作系统上安装时不会报错,而在 macOS 上则可以利用该库的功能。
{
"optionalDependencies": {
"fsevents": "~2.3.2"
}
}
跳过可选依赖可以添加 **--no-optional**
后缀
npm install --no-optional
6. 使用替代工具
使用 pnpm
代替 npm 下载,pnpm 通过硬链接减少磁盘空间占用,大大提升安装速度。用过的都说好。
同时 pnpm 兼容 npm 命令,可以无缝升级使用
// 全局安装 pnpm
npm i pnpm -g
// pnpm 安装 package
pnpm i lodash
结语
希望这些方法能带来帮助。
原文地址:https://webfem.com/post/npm-install-speed,转载请注明出处