优化 npm 安装速度的 6 个技巧
优化 npm 安装速度的 6 个技巧
npm安装速度慢是前端开发中常见的问题,尤其是在项目依赖较多时。本文总结了6个实用的优化方法,从使用国内镜像源到并行下载,再到使用替代工具,帮助开发者大幅提升npm包的安装效率。
引言
当项目依赖的包数量较多时,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
结语
希望这些方法能带来帮助。