1

scripts我在 package.json 文件 ( > 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....
4

2 回答 2

4

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

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

于 2021-03-05T12:04:13.577 回答
0

我一直在使用的解决方案不是使用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更多信息)的解构,不同之处在于不是registry在您的.npmrc文件中设置常规(用于为您的 npm 设置配置)而是设置范围注册表更多信息)。通过这种方式,您将能够从您想要的来源获取您的包。将此应用于package.json您可以将这些命令的值插入co:login甚至隔离脚本中的命令并将这些脚本作为值调用。

于 2021-04-10T13:35:19.780 回答