npm镜像源配置
查看镜像源
npm config get registry
设置镜像源
npm config set registry <地址>
如下设置新的国内镜像源:
npm config set registry https://registry.npmmirror.com/
其它
对于部分包, 仅配置npm镜像源可能还不够, 因为其可能在npm执行过程中, 使用的还有自定义的下载脚本, 因此这个时候仍会音网络问题造成下载失败。
比如electron项目相关的工程:
当我需要 升级项目依赖中的 electron 版本, 或者下载特定版本的electron时, 可能会失败。-> 即使已经配置了国内镜像源。
- 此时需要单独为electron下载安装时依赖的环境变量设置国内镜像源。
- 在终端执行
export ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
, 为electron的下载单独配置镜像源。(非常推荐)需要注意的是, 这行命令仅作用于当前终端, 且无持久化, 如需持久化则可将此命令写入项目根目录的 .npmrc 文件中。
当然, 也可以通过为终端设置代理的方式来解决此问题(不推荐, 不如镜像源的方式稳定)(可能偶尔起作用的情况是由于我没有清理 npm代理 或 npm镜像源 导致的, 以及 已经成功过后的缓存导致的->似乎只要成功过一次后续不管有没有镜像或代理也能一直成功(不肯定哈), 总之 终端的全局代理的配置9成机率对npm是无效的, 只有npm代理和npm镜像配置是最稳的)
export ALL_PROXY="socks5://proxyAddress:port"
(这是为http和https使用socks5代理的命令, 不适用与解决npm下载依赖的问题) (不过也可以尝试下, 有可能有效果 -> 总之, 优先用下方http协议的代理配置方式)
export ALL_PROXY="http://proxyAddress:port"
(这是为http和https使用http代理的命令, 适用与解决npm下载依赖的问题)(推荐, 但更推荐使用镜像源的方式, 比较终端代理的方式不稳定)删除代理
1
2
3
4
5
6 # 删除代理
npm config set proxy null
npm config set https-proxy null
或
npm config delete proxy
npm config delete https-proxy不论使用镜像源还是终端代理, 都有可能在electron-builder首次构建时, 遇到类似
proxyconnect tcp: dial tcp :0: connectex: The requested address is not valid in its context.
的错误信息(常在使用electron-builder首次构建时发生)此问题一般是因为对github的release页面的下载链接访问不畅导致的, 即使用了镜像源, 也避免不了在electron-builder首次构建时从github上下载二进制包。
想要解决此问题
可以尝试切换移动公司的数据网络。(一般情况下对github的线路比较友好)
可以尝试配置npm的代理-只有你的代理可正常使用就能100%解决。(非常推荐, 可结合国内镜像源的配置一起使用 -> [electron-builder构建时肯定可以一起用; 仅
npm i
时一般仅配置镜像源就足够, 此时不确定一起用会不会受影响])(注意: npm的代理设置, 仅支持http入口协议的代理, 不支持socks5 (不过我也不确定, 但这里可优先使用兼容http协议的代理) ) (npm代理的更改是持久化的, 即使重新打开终端依然有效, 因此不使用时需要手动删除代理。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14 # 查看
npm config get proxy
npm config get https-proxy
# 设置代理
npm config set proxy http://server:port
npm config set https-proxy http://server:port
# 删除代理
npm config set proxy null
npm config set https-proxy null
或
npm config delete proxy
npm config delete https-proxy终端代理(不稳定, 不推荐)
还可以尝试使用之前的老办法, 手动配置electron-builder所需的依赖 https://srackhall.top/2024/03/28/electron-fragments/#electron-builder
其它的可能需要单独配置的库, 见下图: