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

如何运行 AWS codeartifact 登录并保留默认存储库

如何解决如何运行 AWS codeartifact 登录并保留默认存储库

我在 package.json 文件 (scripts > preinstall) 或 (scripts > prepare) 中运行这个命令:

aws codeartifact login --tool npm --repository my-repo --domain my-domain --domain-owner <123456789> --profile <me>

完整文件<123456789><me> 为 stackoverflow 进行了修改

{
  "name": "my-app","version": "1.0.0","description": "","main": "index.js","scripts": {
    "preinstall": "npm run co:login","co:login": "aws codeartifact login --tool npm --repository my-repo --domain my-domain --domain-owner <123456789> --profile <me>","test": "echo \"Error: no test specified\" && exit 1"
  },"dependencies": {
    "uuid": "^3.3.2","@my-npm/my-common": "1.0.0"
  }
}

我在.npmrc命令前的aws codeartifact login ..文件

registry=https://registry.npmjs.org
@my-npm:registry=https://my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/-repo/

我的 .npmrc 文件修改

registry=https://my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/-repo/
@my-npm:registry=https://my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/-repo/
//my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/my-repo/:always-auth=true
//my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/my-repo/:_authToken=eyJ2ZXIiOjEsIml....

但我需要保留这个:

registry=https://registry.npmjs.org
@my-npm:registry=https://my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/-repo/
//my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/my-repo/:always-auth=true
//my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/my-repo/:_authToken=eyJ2ZXIiOjEsIml....

解决方法

在命令行末尾添加 --namespace @my-npm

添加的此参数仅更改 @my-npm:registry=... 文件中的范围 .npmrc

,

我一直在使用的解决方案是使用以下命令而不是使用 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

# 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)。 通过这种方式,您将能够从您想要的来源获取您的包。 将此应用于 package.json,您可以将这些命令插入 co:login 的值,甚至可以隔离脚本中的命令并将这些脚本称为值。

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?