[英]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.