NuxtJS部署GitHub User Pages仅显示README.md配置问题求助
问题根因
- 你当前的配置存在两个核心问题:
- peaceiris/actions-gh-pages@v3 默认部署到
gh-pages分支,但你预期GitHub User Pages从master分支读取站点内容,现在编译好的静态资源都存在gh-pages分支,Pages服务自然读不到对应的文件,只会展示master分支的README.md - cd.yml的触发规则不合理,
on: [push, pull_request]会导致任意分支的代码提交、PR操作都触发部署流程,容易出现误部署问题
- peaceiris/actions-gh-pages@v3 默认部署到
修正方案
你可以根据自己的使用习惯任选一种方案:
方案1:调整actions配置,直接把生成的dist内容推到master分支
完全符合你要从master分支发布的需求,仅需修改cd.yml的Deploy步骤配置:
- name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dist publish_branch: master # 新增这行,指定部署到master分支 force_orphan: true # 可选,开启后只会保留最新的部署提交,清理master分支的历史冗余提交
注意:用这个方案的话,你需要把Nuxt项目的源码单独存到其他分支(比如dev分支),后续所有开发都在dev分支提交,CD流程会自动把编译后的静态资源推到master分支,避免源码和部署产物混在一起。
方案2:修改GitHub Pages的发布分支配置
如果不想调整分支使用规则,你可以直接到仓库的Settings -> Pages页面,把Source的分支从master改成gh-pages,不需要修改任何现有配置,等待1-2分钟页面就能正常访问。
补充:GitHub User Pages现在已经支持从任意分支发布,官方早前“必须用master分支”的要求早已更新,这个方案更符合常规开发习惯,源码放master,部署产物自动存gh-pages分支互不干扰。
额外优化建议
你可以把cd.yml的触发规则改成仅在源码所在分支推送时触发,避免无效的CD运行:
on: push: branches: - dev # 替换成你存放源码的分支名
内容的提问来源于stack exchange,提问作者xotix
相关产品推荐
相关产品推荐

