You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行AWS CodeArtifact npm登录命令时如何保留npm官方默认注册表

CodeArtifact登录不修改全局npm源的实现方案

问题根因

直接执行aws codeartifact login --tool npm时,CLI默认会自动覆写项目.npmrc文件中的全局registry配置,将所有包的默认下载源切换为指定的CodeArtifact仓库地址,和「仅对@my-npm私有作用域配置CodeArtifact源、全局始终保留npm公共源」的需求不匹配。

改造步骤

  • 替换原有依赖CodeArtifact CLI自动写入全量.npmrc的登录逻辑,改为单独拉取鉴权token,手动写入必要的鉴权配置项,全程不触碰全局registry字段
  • 在项目根目录预先固定.npmrc的基础配置,不依赖脚本动态生成公共源、作用域源的基础地址

1. 调整package.json中的脚本配置

把原有co:login脚本从直接调用login命令,改为「拉取临时token + 追加鉴权配置到.npmrc」的两步逻辑,完整配置参考:

{
  "name": "my-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "preinstall": "npm run co:login",
    "co:login": "TOKEN=$(aws codeartifact get-authorization-token --domain my-domain --domain-owner <123456789> --profile <me> --query authorizationToken --output text) && printf '\n//my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/my-repo/:always-auth=true\n//my-domain-<123456789>.d.codeartifact.eu-west-1.amazonaws.com/npm/my-repo/:_authToken=%s\n' \"$TOKEN\" >> .npmrc",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "uuid": "^3.3.2",
    "@my-npm/my-common": "1.0.0"
  }
}

2. 固定项目.npmrc基础配置

在项目根目录的.npmrc文件中预先写入全局公共源、作用域源的基础规则,这部分内容不会被登录脚本修改:

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

注意:如果需要兼容Windows多环境执行,核心逻辑保持不变,即不使用aws codeartifact login的自动覆写.npmrc能力,仅通过get-authorization-token接口获取临时鉴权值,手动追加鉴权配置项即可,全程避免修改全局registry字段。如果担心反复执行脚本导致.npmrc内重复出现鉴权行,可在写入新token前,先过滤删除同仓库地址对应的旧鉴权配置,保证.npmrc结构整洁。

最终效果

执行完npm install触发preinstall脚本后,.npmrc文件会自动追加CodeArtifact对应的鉴权配置,最终结构完全匹配预期:

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=<自动拉取的临时鉴权值>

内容的提问来源于stack exchange,提问作者Stéphane GRILLON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 07:06:04