博客搭建 — 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.pswp.cn/web/66666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66666.shtml
英文地址,請注明出處:http://en.pswp.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>// 書籍結構體…