使用Semantic Release+GitHub Actions发布npm包仅含package.json问题
解决Semantic Release发布GitHub Packages仅含package.json的问题
检查Semantic Release配置(.releaserc)
确保@semantic-release/npm插件的pkgRoot配置正确指向dist目录,同时dist目录下必须包含完整可用的package.json(可在构建时复制根目录package.json到dist,或调整字段适配发布需求)。示例配置:
{ "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", [ "@semantic-release/npm", { "pkgRoot": "dist" } ], "@semantic-release/github" ] }
修正dist目录下的package.json
- 确保dist内的package.json中
main字段指向编译后的入口文件,比如"main": "./index.js"(对应dist/index.js),否则安装后无法找到包的执行入口。 - 确认该package.json的
private字段为false,否则Semantic Release会跳过npm发布流程。
调整GitHub Actions工作流(test-publish.yml)
必须在发布步骤前执行构建命令生成dist目录,确保Semantic Release能读取到dist下的完整内容。示例工作流片段:
jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 20 registry-url: 'https://npm.pkg.github.com' scope: '@your-username' # 替换为你的GitHub用户名/组织名 - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Build package run: npm run build # 此命令需确保生成完整的dist目录 - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npx semantic-release
验证dist目录结构
构建完成后,dist目录需包含以下内容:
- 修正后的package.json
- 编译后的所有JS/类型文件(如index.js、index.d.ts、lib/目录等)
- 可选:README.md、LICENSE等文档文件(需手动复制或通过构建脚本自动同步到dist)
常见排查点
- 根目录package.json若设置
private: true,需改为false,或确保dist内的package.json覆盖该配置。 - 确认GitHub Actions的
GITHUB_TOKEN拥有packages: write权限(默认工作流权限通常满足,若有问题可在仓库设置中调整)。
内容的提问来源于stack exchange,提问作者Oke Tega
相关产品推荐
相关产品推荐

