当前位置: 首页 > news >正文

博客搭建 — GitHub Pages 部署

关于 GitHub Pages

GitHub Pages 是一项静态站点托管服务,它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件,通过构建过程运行文件,然后发布网站。

本文最终效果是搭建出一个域名为 https://<user>.github.io 的网站

创建 GitHub Pages 站点仓库

  1. 输入仓库名称,必须命名为 <user>.github.io<user>是你的用户名
  2. 选择仓库可见性:Public(公开)
  3. 选择 “使用 README 初始化此存储库”
  4. 创建仓库
  5. 将需要部署的静态页面代码提交到这个仓库

配置 GitHub Pages

  1. 在仓库下找到设置 Settings,在边栏部分找到 Pages
  2. 选择仓库分支;选择 index.html 文件所在路径,一般是 root
  3. 点击保存,过几分钟刷新下页面 Github Pages
  4. 点击 Visit site 访问

Vue 项目的打包部署流程

其实原理是一样的,在 Vue 项目下运行 npm run build 将打包后的 dist 文件发布到 GitHub Pages 站点仓库。
但是过程比较繁琐,可以使用脚本来实现自动化部署

自动发布脚本中,仓库 origin 选择 SSH 的地址,例如 git@github.com:user/repo.git

不过在这之前需要先在 GitHub 上添加 ssh 公钥

1、新建一个 deploy.sh 文件

#!/usr/bin/env sh# 忽略错误
set -e# 构建
npm run build# 进入待发布的目录
cd distgit init
git add -A
git commit -m 'ci: deploy'# 部署到 https://<user>.github.io
git push -f git@github.com:hai-zou/hai-zou.github.io.git mastercd -

2、在 package.json 中添加一条命令行

{..."scripts": {"deploy": "bash scripts/deploy.sh"},...
}

3、最后运行 npm run deploy 就能够把代码提交到 Github Pages 仓库

注意

如果你的项目使用的是 history 模式路由,在生产环境下,访问非根路径的页面就会得到一个 404 错误。
这是因为浏览器在访问 https://example.com/user 获取不到 html 资源。
但是使用 hash 模式就没有这个问题,https://example.com/#/user 哈希字符(#)后面那部分 url 不会被发送到服务器,所以可以直接请求到根路径上的index.html文件。

可以查看官方给出的 解决办法

GitHub Pages 上如何解决这个问题呢?

GitHub Pages 站点在访问错误路径的时候会跳转到 404 页面,利用这个机制,我们可以在根目录下创建一个跟 index.html 一样的 404.html 文件,
这样在访问错误路径的时候也能请求到根路由的资源,然后通过框架内部的路由机制进行跳转

修改一下发布脚本,在进入发布目录之后添加一行命令,将 index.html 的内容 copy 到 404.html

# 进入待发布的目录
cd dist# 这里是处理vue使用history模式路由,导致页面出现404问题
cp index.html 404.html
http://www.lryc.cn/news/525437.html

相关文章:

  • 翻译:How do I reset my FPGA?
  • Linux 进程环境变量:深入理解与实践指南
  • Linux探秘坊-------5.git
  • Linux中的几个基本指令(二)
  • Java入门笔记(1)
  • 设计模式的艺术-开闭原则
  • 【C语言系列】深入理解指针(3)
  • three.js+WebGL踩坑经验合集:写在前面的话
  • 利用Linux的工作队列(Workqueue)实现中断下半部的处理
  • LabVIEW处理复杂系统和数据处理
  • spring-springboot -springcloud
  • DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)
  • 打造本地音乐库
  • 【2024 - 年终总结】叶子增长,期待花开
  • python 统计相同像素值个数
  • 蓝卓“1+2+N”智慧工厂架构,让工业智能更简单
  • 12、MySQL锁相关知识
  • 某大厂一面:HashMap 的put方法具体做了哪些操作
  • WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理
  • 精选100+套HTML可视化大屏模板源码素材
  • 如何使用Python爬虫按关键字搜索AliExpress商品:代码示例与实践指南
  • No.36 学习 | Python 函数:从基础到实战
  • Unity常用特性(Attribute)用法
  • VUE对接deepseekAPI调用
  • 【Postman 接口测试】接口测试基础知识
  • 谷粒商城——商品服务-三级分类
  • 视觉语言模型 (VLMs):跨模态智能的探索
  • HarmonyOS NEXT:华为分享-碰一碰开发分享
  • 宝塔Linux+docker部署nginx出现403 Forbidden
  • 软件测试丨Redis 的数据同步策略以及数据一致性保证