博客搭建 — 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.mzph.cn/web/66666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络通信---MCU移植LWIP

使用的MCU型号为STM32F429IGT6&#xff0c;PHY为LAN7820A 目标是通过MCU的ETH给LWIP提供输入输出从而实现基本的Ping应答 OK废话不多说我们直接开始 下载源码 LWIP包源码&#xff1a;lwip源码 -在这里下载 ST官方支持的ETH包&#xff1a;ST-ETH支持包 这里下载 创建工程 …

【MySQL】存储引擎有哪些?区别是什么?

频率难度60%⭐⭐⭐⭐ 这个问题其实难度并不是很大&#xff0c;只是涉及到的相关知识比较繁杂&#xff0c;比如事务、锁机制等等&#xff0c;都和存储引擎有关系。有时还会根据场景选择不同的存储引擎。 下面笔者将会根据几个部分尽可能地讲清楚 MySQL 中的存储引擎&#xff0…

【系统环境丢失恢复】如何恢复和重建 Ubuntu 中的 .bashrc 文件

r如果你遇到这种情况&#xff0c;说明系统环境的.bashrc 文件丢失恢复&#xff1a; 要恢复 ~/.bashrc 文件&#xff0c;可以按照以下几种方式操作&#xff1a; 恢复默认的 ~/.bashrc 文件 如果 ~/.bashrc 文件被删除或修改&#xff0c;你可以恢复到默认的版本。可以参考以下…

人工智能丨智能化测试解决方案全面解析

智能化测试解决方案通过整合前沿的人工智能技术与自动化测试技术&#xff0c;为软件产品的测试工作带来了前所未有的高效与智能。 智能化测试解决方案主要内容 大语言模型私有部署&#xff1a;确保文档理解、代码分析和测试生成过程中的安全与隐私&#xff0c;让你无后顾之忧…

Element修改表格结构样式集合(后续实时更新)

场景 修改前端Element组件el-table样式 实现 线表格 <div class"tablepro"><el-table:data"tableData":header-cell-style"{ textAlign:center}"class"tablepro-table"borderstyle"width: 100%;height:100%"&g…

C++语言的语法糖

C语言的语法糖 在现代编程语言的设计中&#xff0c;语法糖&#xff08;Syntactic Sugar&#xff09;是一个非常重要的概念。它指的是一种编程语言所提供的语法特性&#xff0c;使得代码更加简洁易读&#xff0c;编写更加方便&#xff0c;而不是增加语言的功能。C作为一种强大的…

基于Redis实现短信验证码登录

目录 1 基于Session实现短信验证码登录 2 配置登录拦截器 3 配置完拦截器还需将自定义拦截器添加到SpringMVC的拦截器列表中 才能生效 4 Session集群共享问题 5 基于Redis实现短信验证码登录 6 Hash 结构与 String 结构类型的比较 7 Redis替代Session需要考虑的问题 8 …

c++入门----模板深入探究与仿函数

1.模板参数加入一个变量 一般只能是int&#xff0c;double要看c的版本&#xff0c;在最新的版本下是支持double模板参数的。 2.适配器的使用 template <class T,class containerdeque<T>> class stack { public:void push_back(const T& x) {_con.push_back…

【Vim Masterclass 笔记22】S09L40 + L41:同步练习11:Vim 的配置与 vimrc 文件的相关操作(含点评课内容)

文章目录 S09L40 Exercise 11 - Vim Settings and the Vimrc File1 训练目标2 操作指令2.1. 打开 vimrc-sample 文件2.2. 尝试各种选项与设置2.3. 将更改内容保存到 vimrc-sample 文件2.4. 将文件 vimrc-sample 的内容复制到寄存器2.5. 创建专属 vimrc 文件2.6. 对于 Mac、Linu…

kafka学习笔记5 PLAIN认证——筑梦之路

在Kafka中&#xff0c;SASL&#xff08;Simple Authentication and Security Layer&#xff09;机制包括三种常见的身份验证方式&#xff1a; SASL/PLAIN认证&#xff1a;含义是简单身份验证和授权层应用程序接口&#xff0c;PLAIN认证是其中一种最简单的用户名、密码认证方式&…

深入解析 Spring 框架中的事务传播行为

目录 &#xff08;一&#xff09;REQUIRED &#xff08;二&#xff09;SUPPORTS &#xff08;三&#xff09;MANDATORY &#xff08;四&#xff09;REQUIRES_NEW &#xff08;五&#xff09;NOT_SUPPORTED &#xff08;六&#xff09;NEVER &#xff08;七&#xff09;NE…

60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源码 1&#xff0c;changepwd&#xff08;修改密码&#xff09; <?php // 开启会话&#xff0c;以便使用会话变量 session_start();// 设置页面的内容类型为 HTML 并使用 UTF-8 编码 header("Content-Type: text/html; charsetUTF-8");// 引入配置文件&…

高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计

三、CentralCache&#xff08;中心缓存&#xff09;_内存设计 &#xff08;一&#xff09;Span的创建 // 页编号类型&#xff0c;32位下是4byte类型&#xff0c;64位下是8byte类型 // #ifdef _WIN64 typedef unsigned long long PageID; #else _WIN32 typedef size_t PageI…

SimpleHelp远程管理软件存在任意文件读取漏洞(CVE-2024-57727)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

2024年终总结-行到水穷处,坐看云起时

依然是——关于我 我&#xff0c;坐标山东青岛&#xff0c;一位无名的Java Coder&#xff0c;你可以叫我Debug.c亦或者种棵代码技术树。在此不过多赘述关于我&#xff0c;更多的关于我请移步我的2023年年终总结。 2023年终总结-轻舟已过万重山 2024年OKR完成情况 2023年年末…

AI编程工具使用技巧:在Visual Studio Code中高效利用阿里云通义灵码

AI编程工具使用技巧&#xff1a;在Visual Studio Code中高效利用阿里云通义灵码 前言一、通义灵码介绍1.1 通义灵码简介1.2 主要功能1.3 版本选择1.4 支持环境 二、Visual Studio Code介绍1.1 VS Code简介1.2 主要特点 三、安装VsCode3.1下载VsCode3.2.安装VsCode3.3 打开VsCod…

代码随想录day14

二叉树的反转&#xff0c;采用迭代&#xff0c;只能用前序和后序遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(i…

1月21日星期二今日早报简报微语报早读

1月21日星期二&#xff0c;农历腊月廿二&#xff0c;早报#微语早读。 1、多地官宣&#xff1a;2025年可有序、限时或在限定区域燃放烟花爆竹&#xff1b; 2、TikTok恢复在美服务&#xff1b;特朗普提出继续运营TikTok方案&#xff0c;外交部&#xff1a;若涉及收购中国企业应…

计算机组成原理——数据表示(一)

生活是一道长长的旅程&#xff0c;充满了挑战和困难。然而&#xff0c;我们必须坚持下去&#xff0c;努力前进。无论遇到什么困难&#xff0c;我们都要勇敢面对&#xff0c;永不放弃。只有通过不断的努力和坚持&#xff0c;我们才能够取得成功。在这个旅程中&#xff0c;我们可…

【数据结构】双向循环链表实现简易图书管理系统的增删改查

图书管理系统 使用双向循环链表实现一个简单的图书管理系统&#xff0c;图书管理系统有如下功能&#xff1a; 1.添加书籍 2.删除书籍 3.修改书籍信息 4.查询书籍信息 5.借书 6.还书 #include <stdio.h> #include <stdlib.h> #include <string.h>// 书籍结构体…