私库 npm 依赖经常下载报错怎么办?

如何解决公司 npm 资源库依赖不下来

导致这个问题的原因

目前前端依赖资源都是通过包管理工具 npm/yarn 去下载,它有一个资源库路径(registry),来指引依赖包从何处下载。

而公司发布的依赖包一般是上传到 npm 私库上,也就是说需要设置特殊的 npm 资源库地址之后,才能下载到对应的依赖包。

// 内网:
npm config set registry http://10.1.1.10:8087/repository/npm-all/

// 外网:
npm config set registry http://61.183.71.118:8087/repository/npm-all/

image.png

但是情况是,即使设置之后,依然会有几率下载不下来。

image.png

因为改了资源库地址后,所有依赖都会从私库去下载,在并发量比较大的时候会有卡住不动的情况。

解决办法

在项目代码根目录中增加一个 .npmrc 文件,去规定 npm 下载的资源库地址,以及针对不同资源,去从不同的资源库去下载。

image.png

其中,registry 是默认路径,所有在当前项目下去下载的依赖包都走这个路径。

针对特定依赖包,如上图的 @epichust:registry,是所有 @epichust 的 group 一系列依赖包,都会走特殊配置的路径下载,这样减少去私库服务器请求资源的频率,下载成功率大大增加。

建议使用 npm 私库依赖包的项目都使用 .npmrc 文件去设定 npm 资源库地址。