首次创建NPM包:自动升级版本及同步GitHub问题求助
问题排查与修复方案
核心问题分析
- 发布目标Registry错误:当前工作流把包发布到了GitHub Packages(
registry-url: https://npm.pkg.github.com/),而非你预期的官方NPM Registry(npmjs.com)。如果你的目标是npmjs,这是首要问题。 - 版本更新逻辑混乱且未同步仓库:重复执行
npm version命令,先拉远程版本覆盖本地再打patch,完全没必要;而且用了--no-git-tag-version,不会把package.json的版本变更提交到Git仓库,导致GitHub上的文件没更新。 - 权限不足:工作流设置了
contents: read,没有写入仓库内容的权限,就算后续加了提交步骤也推不回去。 - 发布认证变量错误:
npm publish认的是NODE_AUTH_TOKEN,不是你写的credentials,这会导致认证异常,发布可能没真正生效。
修复后的工作流配置
根据你的需求(自动升版本到目标Registry + 更新GitHub仓库的package.json),分两种场景给出配置:
场景1:发布到官方NPM Registry
on: push: branches: - main jobs: publish: runs-on: ubuntu-latest permissions: contents: write # 必须开写入权限才能更新仓库 packages: write steps: - uses: AutoModality/action-clean@v1 - uses: actions/checkout@v4 # 升级到最新版,兼容性更好 with: ref: 'main' fetch-depth: 0 persist-credentials: false # 避免默认权限冲突 - uses: actions/setup-node@v4 with: node-version: 20 # Node12已停更,换LTS版本20或18 registry-url: https://registry.npmjs.org/ # 官方NPM地址 scope: "@nandhirajan-tfi" - run: npm install - run: npm run build # 原命令npm build是错的,要加run # 配置Git身份,升级patch版本并提交变更 - run: | git config user.name "GitHub Actions" git config user.email "actions@github.com" npm version patch -m "[RELEASE] %s" # 把版本变更推回GitHub仓库 - run: git push origin main --tags env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} # 发布到官方NPM - run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} # 要在GitHub Secrets里配置NPM的访问令牌
场景2:发布到GitHub Packages
如果确实要发布到GitHub的包仓库,只需要修改setup-node和发布部分:
# 替换setup-node步骤 - uses: actions/setup-node@v4 with: node-version: 20 registry-url: https://npm.pkg.github.com/ scope: "@nandhirajan-tfi" # 替换发布步骤 - run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
额外注意事项
- NPM_TOKEN配置:如果发官方NPM,要去NPM官网生成带
publish权限的访问令牌,然后加到GitHub仓库的Secrets里,命名为NPM_TOKEN。 - 脚本检查:确保
package.json的scripts里有build字段,不然npm run build会报错。 - Git身份:必须配置用户名和邮箱,否则GitHub Actions没法提交代码变更。
内容的提问来源于stack exchange,提问作者Nandy
相关产品推荐
相关产品推荐

