如何解决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 举报,一经查实,本站将立刻删除。