目录

Config Yarn to Use Private Package

https://images.pexels.com/photos/3750893/pexels-photo-3750893.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260

场景

在公网上我们获取 npm 包的时候直接就用下面的命令就可以了

1
2
3
$ npm install xxx
$ # 或者
# yarn add xxx

但是有时候,公司内部开发的工具库只想放在公司内部的服务器上,那么我们就需要对 npm 源进行配置了。因为 yarn 可以利用缓存,其速度比较快,且 npm 包是公司内部网络,鉴于效率,我们采用 yarn 来提速。

配置。npmrc

下面是 .npmrc 的通常配置, 这里的 https://npm.xxx.com/npm 就是私服的地址, 下面//开头的内容就是用来鉴权的 token。

1
2
3
# .npmrc
registry=https://npm.xxx.com/npm
//npm.xxx.com/npm/:_authToken=dbef52be-1a83-46e1-a3ce-e0c8727e3fa4

上面的配置,在用 npm 安装私有库或者公有库的时候都没问题,但是我们要使用 yarn,如果再不配置任何内容,在执行 yarn add xxx 的时候,控制台会报如下错误

1
2
3
4
5
yarn global v1.22.0
[1/4] 🔍  Resolving packages...
error An unexpected error occurred: "https://npm.xxx.com/npm/yyy: authentication required".
info If you think this is a bug, please open a bug report with the information provided in "/Users/zhongren.gu/.config/yarn/global/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/global for documentation about this command.

这其实不是 yarn 的 bug, 我们需要在 .npmrc 中增加如下一行 always-auth=true, 最终结果如下

1
2
3
4
# .npmrc
registry=https://npm.xxx.com/npm
//npm.xxx.com/npm/:_authToken=dbef52be-1a83-46e1-a3ce-e0c8727e3fa4
always-auth=true

结果

再次执行 yarn add xxx 之后就会正常安装了,以后就可以愉快的安装私服或者公网上的 package 了。

Refs

1.https://yarnpkg.com/


https://cdn.staticaly.com/gh/guzhongren/data-hosting@master/20210819/wechat.ae9zxgscqcg.png