繁体   English   中英

NPM 坚持使用 CodeArtifact,甚至在公共注册表上

[英]NPM insists on CodeArtifact, even on public registry

我正在使用npmrc设置我的公司(使用 CodeArtifact)和公共(使用registry.npmjs.org )NPM 注册表。

问题是,即使选择了公共配置文件,我仍然收到一个错误,即缺少对 CodeArtifact 的身份验证。 摆脱这种情况的唯一方法是在 CodeArtifact 上进行身份验证,这会导致将身份验证令牌设置为两个配置文件。 之后,无论选择哪个配置文件,都使用 CodeArtifact 作为注册表。

我尝试了极端措施并删除了我的所有配置文件并创建了一个集合到registry.npmjs.org 尽管如此,NPM(和 Yarn)仍然抱怨缺少对 CodeArtifact 的身份验证。

有任何想法吗?

假设您使用aws codeartifact login --tool npm --repository my-repo --domain my-domain登录到 aws,您应该使用更精细的方法,使用以下命令:

# get endpoint 
endpoint = aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm

# set a scoped registry
npm config set registry endpoint --scope=@my-package <- this is what you want

# get token
token = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --repository my_repo

# set token
npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:_authToken=token

# always truth
npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:always-auth=true

这些命令是aws codeartifact login --tool npm --repository my-repo --domain my-domain更多信息)的解构,不同之处在于不是在您的.npmrc文件中设置通用registry (用于设置配置为您的 npm)将设置一个范围注册表更多信息)。 通过这种方式,您将能够从您想要的来源获取您的包。 在您的情况下,无需进行身份验证即可访问registry.npmjs.org

这是我的 bash 脚本中使用的增强解决方案:

#!/bin/bash
ACCOUNT_NO=$(aws sts get-caller-identity --query "Account" --output text)
COMPANY=my_company
ENDPOINT=$(aws codeartifact get-repository-endpoint --domain $COMPANY --domain-owner $ACCOUNT_NO --repository $COMPANY --format npm --output text)
TOKEN=$(aws codeartifact get-authorization-token --domain $COMPANY --domain-owner $ACCOUNT_NO --duration-seconds 43200 --query authorizationToken --output text)
npm config set @$COMPANY:registry $ENDPOINT
npm config set ${ENDPOINT:6}:_authToken=$TOKEN
npm config set ${ENDPOINT:6}:always-auth=true

我查看了npm config list的 output ,它看起来好像是手动设置的。

我测试并能够下载私人test (来自 CodeArtifact)和完全公开的cypress

npm install @my_company/test
npm install @my_company/test@0.0.1
npm install cypress

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM