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

如何在Github Action中发布依赖私有包的私有NPM包

解决方案

问题根因

你遇到的404报错是因为npm默认到公共npm registry(https://registry.npmjs.org)查找@wilson前缀的私有包,而你的@wilson/monday是存放在Github Packages私有源中的,没有同步到公共npm源,因此无法找到。

具体修改步骤

  1. 调整Github Action配置(npm.yml)
  • 给actions/setup-node添加scope配置,指定@wilson前缀的包都从Github Packages拉取
  • 给依赖安装步骤也配置NODE_AUTH_TOKEN环境变量,确保有权限拉取私有包
  • 删除冗余的npm install步骤,npm ci本身会根据package-lock.json安装精确版本依赖,提前跑npm install会修改锁文件,失去ci的意义
  • 发布步骤的token确保有对应Packages的读写权限
  1. 验证权限配置
  • 如果你使用的是Github自带的GITHUB_TOKEN,需要确保同组织下的包已经设置了允许组织内Actions读取的权限
  • 如果是跨组织拉包或者GITHUB_TOKEN权限不足,可以生成个人访问令牌(PAT),勾选read:packages和write:packages权限,存到仓库Secrets中使用
  1. 可选临时生成.npmrc的方案(如果不想改setup-node配置)
    可以在依赖安装前添加一步,临时生成.npmrc配置,不需要提交到代码仓库:
- run: echo "@wilson:registry=https://npm.pkg.github.com" >> .npmrc

修改后的完整配置示例

npm.yml:

name: npm
on:
  release:
    types: [published]
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.x]
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '12.x'
          registry-url: 'https://npm.pkg.github.com'
          scope: '@wilson' # 新增scope配置
      - run: npm ci --ignore-scripts
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }} # 给安装步骤添加授权token
      - run: npm run build --if-present
      - run: npm publish
        env:
          CI: true
          NODE_AUTH_TOKEN: ${{ secrets.GH_PACKAGES_TOKEN }}

你当前的package.json配置是正确的,publishConfig里的registry和access配置符合Github Packages的要求,无需修改。

内容的提问来源于stack exchange,提问作者GʀᴜᴍᴘʏCᴀᴛ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:42:01