解决 npm 安装慢的问题:加速 npm 包下载的实用方法

1. 使用国内镜像源

npm 默认的镜像源是 https://registry.npmjs.org/,由于服务器在国外,下载速度较慢。可以通过切换到国内镜像源(如淘宝镜像)来加速。

1.1 临时切换镜像源

在安装包时,使用 --registry 参数指定镜像源:

bash 复制代码
npm install express --registry=https://registry.npmmirror.com
1.2 永久切换镜像源

通过以下命令将 npm 的默认镜像源修改为淘宝镜像:

bash 复制代码
npm config set registry https://registry.npmmirror.com

验证镜像源是否修改成功:

bash 复制代码
npm config get registry

2. 使用 nrm 管理镜像源

nrm 是一个 npm 镜像源管理工具,可以快速切换不同的镜像源。

2.1 安装 nrm
bash 复制代码
npm install -g nrm
2.2 查看可用镜像源
bash 复制代码
nrm ls

输出示例:

复制代码
* npm ---- https://registry.npmjs.org/
  yarn ---- https://registry.yarnpkg.com/
  taobao -- https://registry.npmmirror.com/
  ...
2.3 切换镜像源
bash 复制代码
nrm use taobao
2.4 测试镜像源速度
bash 复制代码
nrm test

3. 使用代理或 VPN

如果你所在的网络环境限制了 npm 的访问速度,可以尝试使用代理或 VPN 来加速。

3.1 设置代理

通过以下命令设置 HTTP 或 HTTPS 代理:

bash 复制代码
npm config set proxy http://proxy.example.com:8080
npm config set https-proxy http://proxy.example.com:8080
3.2 取消代理
bash 复制代码
npm config delete proxy
npm config delete https-proxy

4. 清理 npm 缓存

npm 会将下载的包缓存到本地,如果缓存文件损坏或过多,可能会导致安装速度变慢。可以通过以下命令清理缓存:

bash 复制代码
npm cache clean --force

5. 使用 cnpm 替代 npm

cnpm 是淘宝团队提供的 npm 镜像工具,专门用于加速 npm 包的安装。

5.1 安装 cnpm
bash 复制代码
npm install -g cnpm --registry=https://registry.npmmirror.com
5.2 使用 cnpm

使用 cnpm 代替 npm 安装包:

bash 复制代码
cnpm install express

6. 优化 npm 安装的其他技巧

  • 并行安装 :通过设置 npmmaxsockets 参数,增加并行下载的连接数:

    bash 复制代码
    npm config set maxsockets 10
  • 离线安装 :如果某些包经常需要安装,可以提前下载并保存到本地,使用 npm pack 命令生成 .tgz 文件,然后通过 npm install <package>.tgz 离线安装。


总结

通过切换国内镜像源、使用 nrm 管理镜像、设置代理或 VPN、清理缓存以及使用 cnpm 等方法,你可以显著提升 npm 的安装速度。这些技巧不仅适用于个人开发环境,也适用于团队协作和 CI/CD 环境,能够有效提高开发效率。


参考资料:

  1. npm 官方文档
  2. 淘宝 npm 镜像
  3. nrm GitHub 仓库
相关推荐
加班是不可能的,除非双倍日工资2 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip3 小时前
vite和webpack打包结构控制
前端·javascript
excel3 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼3 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy3 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT4 小时前
promise & async await总结
前端
Jerry说前后端4 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天4 小时前
A12预装app
linux·服务器·前端