Yarn 1.22适配npm8新版.npmrc的_auth配置后publish失败求助
解决Yarn 1.x适配npm 8+格式.npmrc认证的问题
以下是几个实用的解决办法:
方法1:同时保留两种认证格式
Yarn 1.x对npm 8+引入的带仓库前缀的_auth格式兼容不佳,直接在.npmrc里同时配置新旧两种格式即可:
# 兼容Yarn 1.x的旧格式 _auth=XXXXXXXXXXXXXX # 兼容npm 8+的新格式(替换成你的本地仓库地址) //你的本地仓库地址/:_auth=XXXXXXXXXXXXXX # 确保仓库地址统一 registry=https://你的本地仓库地址/
这样Yarn会读取旧格式的认证,npm 8+则使用带前缀的版本,互不干扰。
方法2:为Yarn单独配置认证
如果不想混用格式,可以给Yarn单独设置配置文件:
- 在项目根目录创建
.yarnrc文件 - 写入Yarn专属的认证配置:
registry "https://你的本地仓库地址/" _auth "XXXXXXXXXXXXXX"
主目录的.npmrc保留npm 8+要求的带前缀格式,Yarn会优先读取项目的.yarnrc,npm则使用主目录的配置。
方法3:用Yarn login命令重新生成配置
直接通过Yarn的登录流程生成适配它的认证信息:
- 先删除
.npmrc里所有_auth相关的配置 - 执行登录命令(替换成你的本地仓库地址):
yarn login --registry=https://你的本地仓库地址/
- 按提示输入用户名、密码、邮箱,Yarn会自动生成适配它的认证配置,之后可以手动补充npm 8+需要的带前缀格式。
方法4:检查仓库地址的匹配度
确认带前缀的_auth配置里的仓库地址和registry完全一致:
比如你的registry是https://repo.internal.com/npm/,那么_auth的前缀必须是//repo.internal.com/npm/:_auth=XXX,路径、斜杠都要完全匹配,不能有遗漏或多余。
内容的提问来源于stack exchange,提问作者user3257598
相关产品推荐
相关产品推荐

