使用 Github workflow 发布插件

使用 GitHub Actions 发布插件

本指南将帮助你使用 GitHub Actions 自动化发布 NPM 包的流程,提高发布成功率并简化操作步骤。

目录

前期准备

  • GitHub 账号
  • NPM 账号
  • 已经开发完成的插件

详细步骤

1. 准备代码仓库

将你的代码上传到 GitHub 仓库中。确保 package.json 文件中的版本号、包名等信息正确。

2. 配置 GitHub Workflow

  1. 在项目根目录创建以下目录和文件:.github/workflows/publish.yml
  2. 将以下内容复制到 publish.yml 文件中:
name: Publish

on:
  workflow_dispatch:  # 手动触发工作流

permissions:
  contents: write
  id-token: write

jobs:
  publish:
    name: Publish
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version: 20
        env:
          DISABLE_V8_COMPILE_CACHE: 1
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Publish
        run: |
          npm config set provenance true
          echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
          npm publish --access public
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

多包仓库配置

如果你的仓库包含多个需要发布的包,需要修改发布步骤:

      - name: Publish
        run: |
          npm config set provenance true
          echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
          cd <插件目录> && npm publish --access public

3. 设置 NPM Token

  1. 登录 NPM 官网
  2. 点击右上角头像 → Access Tokens
  3. 点击 “Generate New Token” → “Classic Token”
  4. 选择 “Automation” 类型
  5. 复制生成的 Token

设置 GitHub Secrets:

  1. 在 GitHub 仓库页面,进入 Settings → Secrets and variables → Actions

  2. 点击 “New repository secret”

  3. 名称填写 NPM_TOKEN,值填入刚才复制的 Token

  4. 点击 “Add secret” 保存

4. 发布插件

  1. 确保已更新 package.json 中的版本号

  2. 进入 GitHub 仓库的 Actions 页面

  3. 选择 “Publish” workflow

  4. 点击 “Run workflow” 按钮

  5. 等待工作流程执行完成

常见问题

  1. 发布失败

    • 检查 NPM Token 是否正确设置
    • 确认包名是否已被占用
    • 版本号是否已更新
  2. 构建错误

    • 检查依赖是否完整安装
    • 确认构建命令是否正确
  3. 权限问题

    • 确保 workflow 文件中的 permissions 配置正确
    • 检查 NPM Token 的权限范围

相关资源

3 个赞

主播主播,你的 GitHub Actions 的确很强,但是还是太吃操作了…

有没有更简单,更无脑的操作方法呢?(((((

1 个赞

直接不写插件,就没有这些困扰了

2 个赞

npm run build如果失败了会取消发布吗,我自己写了个简单的bat但没办法确定build有没有成功

2 个赞

build 失败后,workflows会中断,不会发布。

3 个赞

有的有的兄弟

2 个赞