场景
在公网上我们获取 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/