微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NPM 坚持使用 CodeArtifact,即使是公共注册表

如何解决NPM 坚持使用 CodeArtifact,即使是公共注册表

我正在使用 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 (more info) 的解构,区别在于不是在您的 registry 文件中设置通用的 .npmrc(用于设置您的 npm) 将设置一个范围的注册表 (more info)。 通过这种方式,您将能够从您想要的来源获取您的包。在您的情况下,无需授权即可访问 registry.npmjs.org

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。