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

如何在Angular项目的package.json中获取docker-build.yaml的环境变量

解决Docker构建时传递环境变量到Angular项目私有仓库依赖的问题

方法一:用.npmrc动态配置(推荐)

这是npm官方推荐的私有仓库认证方式,比直接修改package.json更规范安全:

  • 在Dockerfile中添加以下步骤,构建时生成包含令牌的.npmrc文件:
    ARG NPM_TOKEN
    ENV NPM_TOKEN=$NPM_TOKEN
    
    # 配置私有仓库的scope和认证令牌
    RUN echo "@your-scope:registry=https://npm.pkg.github.com" >> .npmrc \
        && echo "//npm.pkg.github.com/:_authToken=\${NPM_TOKEN}" >> .npmrc
    
  • 在docker-build.yaml中传递这个环境变量(以CI secrets为例):
    build:
      args:
        - NPM_TOKEN=${{ secrets.NPM_TOKEN }}
    
  • 执行npm install时,npm会自动读取.npmrc的配置,无需修改package.json里的依赖地址。

方法二:动态替换package.json中的占位符

如果一定要在package.json里指定仓库地址,可以用占位符+sed替换的方式:

  1. 先在package.json里写好带占位符的依赖地址:
    "dependencies": {
      "@your-scope/repo-name": "https://github.com/<your-user>/<repo-name>/_authToken=__NPM_TOKEN__"
    }
    
  2. 在Dockerfile中添加替换命令:
    ARG NPM_TOKEN
    # 替换占位符为实际令牌
    RUN sed -i "s/__NPM_TOKEN__/$NPM_TOKEN/g" package.json
    # 执行依赖安装
    RUN npm install
    
  3. 同样在docker-build.yaml中传递ARG参数即可。

方法三:直接在npm install命令中传递令牌

无需修改任何配置文件,直接在install命令里指定认证信息:

ARG NPM_TOKEN
# 全局指定私有仓库和令牌
RUN npm install --registry=https://npm.pkg.github.com --//npm.pkg.github.com/:_authToken=$NPM_TOKEN

# 或者仅针对特定私有包
RUN npm install @your-scope/repo-name --registry=https://npm.pkg.github.com --//npm.pkg.github.com/:_authToken=$NPM_TOKEN

注意事项

  • 绝对不要将令牌硬编码到代码或配置文件中,始终通过环境变量/ARG传递,防止令牌泄露。
  • 如果使用CI/CD工具(如GitHub Actions),确保NPM_TOKEN存储在安全的secrets中,不要明文写在yaml文件里。
  • Angular项目的依赖安装逻辑和普通Node项目一致,以上方法无需额外修改Angular配置。

内容的提问来源于stack exchange,提问作者indra257

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:33:54