0

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

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

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

有任何想法吗?

4

1 回答 1

1

假设您正在使用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更多信息)的解构,不同之处在于不是registry在您的.npmrc文件中设置常规(用于为您的 npm 设置配置)而是设置范围注册表更多信息)。通过这种方式,您将能够从您想要的来源获取您的包。在您的情况下,registry.npmjs.org无需进行身份验证即可访问。

于 2021-06-07T13:53:49.353 回答