# 我有一个小问题
以下两个问题就很常见了呀:
- 使用 npm 或者 yarn 的源安装依赖包好慢。比如要 5 分钟。可每次发布都绕不开这 5 分钟。。
- 发现某个安装包安装时间巨长,还总是失败,比如
sass
、cypress
# 关于 NPM/Yarn 安装依赖
当执行 npm install cypress
的时候:
- npm 是去 npm 依赖仓库 (opens new window) 查找依赖并安装的。如果你的电脑访问这个仓库地址很慢,那么安装速度就会很慢
- 此时依赖包
cypress
还需要从其官网下载一个.app
文件作为客户端执行。这个下载过程依旧很慢,甚至是失败
为什么慢和失败,就是因为科学原因,你的机器访问目标路径下载时速度慢,甚至是无法访问
# 解决方案
使用 .npmrc
配置文件指定依赖包、依赖文件的下载路径,将其指向国内的网址,速度就能大幅提高。
在项目根目录创建 .npmrc
文件,内容如下,可以覆盖绝大部分安装场景了:
# 在服务端执行时可能需要最高权限执行
unsafe-perm=true
# 指定依赖的安装源
registry=https://registry.npmmirror.com/
# 指定 node.js 的安装源,某些依赖包可能需要下载 node.js
disturl=https://npmmirror.com/mirrors/node/
# 一些依赖包内部需要下载的依赖文件,以下变量会被相关依赖包读取到并使用
sass_binary_site=https://npmmirror.com/mirrors/node-sass/
phantomjs_cdnurl=https://npmmirror.com/mirrors/phantomjs/
electron_mirror=https://npmmirror.com/mirrors/electron/
chromedriver_cdnurl=https://npmmirror.com/mirrors/chromedriver/
operadriver_cdnurl=https://npmmirror.com/mirrors/operadriver/
selenium_cdnurl=https://npmmirror.com/mirrors/selenium/
node_inspector_cdnurl=https://npmmirror.com/mirrors/node-inspector/
fsevents_binary_host_mirror=https://npmmirror.com/mirrors/fsevents/
puppeteer_download_host=https://npmmirror.com/mirrors/
sentrycli_cdnurl=https://npmmirror.com/mirrors/sentry-cli/
sharp_binary_host=https://npmmirror.com/mirrors/sharp/
sharp_libvips_binary_host=https://npmmirror.com/mirrors/sharp-libvips/
sqlite3_binary_site=https://npmmirror.com/mirrors/sqlite3/
python_mirror=https://npmmirror.com/mirrors/python/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
NPM
和 yarn
都能识别 .npmrc
文件。完美解决上述问题。
# 其他
如果只是解决安装源的问题。推荐使用 nrm
- 安装
npm install nrm --global --registry=https://registry.npm.taobao.org/
- 查看当前
nrm
都有哪些源
nrm ls
除了查看预置的安装源,你还可以使用 nrm add <registry> <url>
自定义安装源,比如公司私有 npm
- 使用
taobao
源
nrm use taobao
这样系统全局的安装源就被指定为淘宝源了,以后新项目中即使没有 .npmrc
指定安装源也可以愉快的从淘宝源安装依赖包了。但是某些依赖包的依赖文件下载问题还是需要 .npmrc
来解决鸭 🤣
参考文章: