优化 npm 安装速度的 6 个技巧

2025-03-26
npm
69

引言

当项目依赖的包数量较多时,npm 需要下载和安装大量的文件,导致安装时间显著增加。尤其是对于大型项目,node_modules 目录可能包含成千上万个文件,安装过程耗时较长。npm 默认从官方源(https://registry.npmjs.org)下载依赖包,对于国内开发者来说,由于网络延迟或限制,下载速度可能非常慢,甚至失败。

本文将通过多个手段,帮助大家提升 npm 的下载速度。

优化npm安装速度

为什么 npm 安装速度慢?

  • 网络问题:npm 默认从官方源下载依赖,国内用户可能因网络问题导致下载速度慢。

  • 依赖数量多:项目依赖的包越多,安装时间越长。

  • 缓存未充分利用:npm 的缓存机制未被有效利用。

  • 锁文件冲突package-lock.jsonyarn.lock 文件冲突可能导致重复安装。

优化方法

1. 使用国内镜像源

通过设置国内镜像,提高下载速度。最常用的就是淘宝镜像 https://registry.npmmirror.com

设置镜像源的方法有两种:

  1. 通过命令行设置 registry
npm config set registry https://registry.npmmirror.com
  1. 直接写到配置文件 .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 作为替代工具

使用 pnpm 代替 npm 下载,pnpm 通过硬链接减少磁盘空间占用,大大提升安装速度。用过的都说好。

同时 pnpm 兼容 npm 命令,可以无缝升级使用

// 全局安装 pnpm
npm i pnpm -g

// pnpm 安装 package
pnpm i lodash

结语

希望这些方法能带来帮助。

原文地址:https://webfem.com/post/npm-install-speed,转载请注明出处