可以将 npm 用于私有包的 AWS CodeArtifact,而所有 npm.org 都与 public 包一起使用吗?
Can npm be used AWS CodeArtifact for private packages, while all npm.org is used with public packages?
docs 读起来有点像开发人员应该将 所有“包注册职责”交给 AWS CodeArtifact.但我想继续对某些软件包使用 npm.org。
给定一个使用私有和 public 包的 javascript 应用程序,我可以这样设置 npm/AWS 吗:
- 私有范围的包(我的代码)是从 AWS CodeArtifact 中提取的,并且
- publically 范围内的包(例如 lodash)被拉取 npm.org?
我也对此感到困惑,但经过大量阅读,aws codeartifact 希望您对 public 包进行一对一映射。这意味着如果你想从 public npm 存储库中获取 lodash,你需要将它添加到你的 codeartifact 存储库中。幸运的是 aws 使这变得简单,有 2 个解决方案可以实现这个
解决方案一:
在您的 codeartifact 存储库上设置上游到 npm 注册表。
这将自动创建一个名为“npm-store”的 codeartifact 存储库,当您从 package.json npm install public 包(当然是在登录之后)时,它会添加尚未添加的包
安装在“npm-store”上,然后您的 codeartifact 存储库(您将 npm-store 上传到的存储库)将从那里下载它,然后将在您的构建中使用。
您还可以设置另一个上游以在同一存储库上说 pypi。将以同样的方式工作
方案二:
使用 associate-external-connection
- 每个 codeartifact 存储库只能有一个外部连接。您所做的是创建一个 codeartifact 存储库,我们将其命名为“my-external-repo”。现在我可能是错的,但我在 UI 中看不到任何地方可以进行设置,但是如果您使用的是 aws cli,则可以 运行 类似于此的命令
aws codeartifact associate-external-connection \ --domain "my-org" --domain-owner "account-id" \ --repository "my-external-repo" --external-connection public:npmjs
然后将“my-external-repo”设置为将使用 public npm 包的 codeartifact 存储库的上游。现在,当你 npm install(当然是在登录之后)时,public 不在“my-external-repo”上的包将被添加,然后你将“my-external-repo”上传到上游的各种存储库将下载这些包
有办法显式设置两个 npm 注册表,从而实现您想要的。
与其使用 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), with the difference that instead of setting a general registry
at your .npmrc
file (used to set configurations for your npm) will set a scoped registry (more info) 的解构。
通过这种方式,您将能够从您想要的来源获取您的包裹。
docs 读起来有点像开发人员应该将 所有“包注册职责”交给 AWS CodeArtifact.但我想继续对某些软件包使用 npm.org。
给定一个使用私有和 public 包的 javascript 应用程序,我可以这样设置 npm/AWS 吗:
- 私有范围的包(我的代码)是从 AWS CodeArtifact 中提取的,并且
- publically 范围内的包(例如 lodash)被拉取 npm.org?
我也对此感到困惑,但经过大量阅读,aws codeartifact 希望您对 public 包进行一对一映射。这意味着如果你想从 public npm 存储库中获取 lodash,你需要将它添加到你的 codeartifact 存储库中。幸运的是 aws 使这变得简单,有 2 个解决方案可以实现这个
解决方案一:
在您的 codeartifact 存储库上设置上游到 npm 注册表。
这将自动创建一个名为“npm-store”的 codeartifact 存储库,当您从 package.json npm install public 包(当然是在登录之后)时,它会添加尚未添加的包 安装在“npm-store”上,然后您的 codeartifact 存储库(您将 npm-store 上传到的存储库)将从那里下载它,然后将在您的构建中使用。 您还可以设置另一个上游以在同一存储库上说 pypi。将以同样的方式工作
方案二:
使用 associate-external-connection
- 每个 codeartifact 存储库只能有一个外部连接。您所做的是创建一个 codeartifact 存储库,我们将其命名为“my-external-repo”。现在我可能是错的,但我在 UI 中看不到任何地方可以进行设置,但是如果您使用的是 aws cli,则可以 运行 类似于此的命令
aws codeartifact associate-external-connection \ --domain "my-org" --domain-owner "account-id" \ --repository "my-external-repo" --external-connection public:npmjs
然后将“my-external-repo”设置为将使用 public npm 包的 codeartifact 存储库的上游。现在,当你 npm install(当然是在登录之后)时,public 不在“my-external-repo”上的包将被添加,然后你将“my-external-repo”上传到上游的各种存储库将下载这些包
有办法显式设置两个 npm 注册表,从而实现您想要的。
与其使用 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), with the difference that instead of setting a general registry
at your .npmrc
file (used to set configurations for your npm) will set a scoped registry (more info) 的解构。
通过这种方式,您将能够从您想要的来源获取您的包裹。