NPM始终使用AWS Codeartifact

8

我在本地机器上有一些不同的项目。其中一些使用AWS Codeartifact下载AWS Codeartifact中的私有依赖项,而其他一些则不使用。使用AWS Codeartifact的项目使用Yarn管理其依赖项,而不使用AWS Codeartifact的项目使用NPM管理其依赖项。

当我在NPM中运行一个简单的命令时:

npm install nanoid

我尝试连接到我的AWS Codeartifact,但npm出现错误:

Unable to authenticate, need: Bearer realm="domain-npm-repo/npm-repo", Basic realm="domain-npm-repo/npm-repo"

我该如何配置我的电脑,只使用AWS CodeArtifact于我想要的项目中?

其他配置:

我的电脑运行着Windows 10系统,我已经全局安装了aws-sdk并且设置好了我的凭证。

4个回答

20

我通过运行以下命令解决了它:

npm config set registry https://registry.npmjs.org/
它将我的npm仓库设置回默认值,并使用npm仓库而不是我的aws codeartifact仓库。

6
假设您正在使用 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的配置) (更多信息)。 这样,您就可以从您想要的源中获取您的软件包。


1
AWS文档链接: https://docs.aws.amazon.com/cli/latest/reference/codeartifact/get-repository-endpoint.html https://docs.aws.amazon.com/cli/latest/reference/codeartifact/get-authorization-token.html - Anton Krug
谢谢你的回答!它帮了我很多,而且确实更加细致。谢谢! - Matheus Carvalho
请注意,登录命令还支持--namespace标志(实际上将注册表URL限定在.npmrc中)。 - Jason L

0

如果未来有人来到这个页面。以上的解决方案都对我无效。有效的方法是在我的package.json文件中的publishConfig.registry属性后面添加一个斜杠。


0
作为一个临时解决方案,你可以从你的 .npmrc 文件中删除所有内容,这样就不会使用 codeartifact 了。但是每次运行 codeartifact 命令时,该文件都会被更新,所以你每次想运行非 codeartifact 项目时都需要清空该文件。

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助他人理解如何解答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接