GitHub Pages 的原理與功能

在這篇文章中,我探討了使用 GitHub Pages 作為靜態網站的托管服務,特別強調了其設置簡單且便捷的特點,同時列出了使用此服務時的一些限制。我還介紹了如何將個人網域綁定至 GitHub Pages 並利用 npm 套件快速部署靜態網站。此外,我詳細說明了如何透過配置文件快速部署到 GitHub Pages,並提供了相關配置的具體示例。

GitHub Pages 的原理與功能
Photo by Roman Synkevych / Unsplash
GitHub Pages 是在 GitHub 裡面,可以解析靜態網頁/文件並渲染成頁面的網頁托管服務

在 GitHub 的專案內新建一個分支名稱為 gh-pages 時,GitHub 便會預設將此分支內的檔案以靜態網頁的方式呈現,因此可以利用此類特性來製造一個簡單的網站。

所以最簡單的 GitHub Pages 應該是這樣,新建一個項目裡面放 index.html 檔案,在 setting 左邊 Code and automation 找到 pages,設定 GitHub Pages 的分支後即產生一個網址給你,若是分支內的檔案符合 GitHub Pages 的限制即可看到渲染成功後的網頁。


1. GitHub Pages 的限制

使用 gh-pages 時會有以下的限制
  1. 僅能呈現靜態頁面的內容(即 HTML 網頁)
  • 無法提供動態網頁
  • 例如利用 PHP、JSP 等等網頁程式所撰寫的檔案
  1. 不支援如 .htaccess 之類的密碼驗證功能,即不能針對 gh-pages 的頁面設定密碼保護
  2. 所有的 gh-pages 內的頁面都是公開的,表示所有的人都可存取到相關的頁面
  3. gh-pages上的檔案庫大小限制為 1GB
  4. 每個月的頻寬限制為 100GB
  5. 每小時最多能提交 10 個版本的檔案

2. GitHub Pages 綁定個人網域

  1. 在該專案的根目錄放一個檔名為 CNAME 的檔案,內容只要放你想要客制化的那個網址
  2. 網域後台設定一組 CNAME 指到 https://BoisonChang.github.io/my-app-cicd 原始網址

3. 使用套件快速部署到 GitHub Pages

  • 建置專案
    1. npx create-react-app my-app-cicd
    2. cd my-app-cicd
    3. npm run start
    4. git init
    5. git add .
    6. git commit -m “first commit“
    7. 在 GitHub 上開設 repo 取名 my-app-cicd
    8. git remote add origin <https://github.com/BoisonChang/my-app-cicd.git>
    9. git push -u origin main
  • 安裝套件
    • npm install --save gh-page
  • 設定 package.json 檔案內容
    1. 加上 “name”: “OOXX“
    2. 加上 “homepage” : “https://myusername.github.io/name
    3. scripts 中加上 "predeploy": "npm run build"
    4. scripts 中加上 "deploy": "gh-pages -d build"
{
  "name": "my-app-cicd",
  "homepage": "https://BoisonChang.github.io/my-app-cicd",
  // ...
}
...
  "scripts": {
  "predeploy": "npm run build",
  "deploy": "gh-pages -d build",
  "start": "react-scripts start",
  "build": "react-scripts build",
    ...
}

參考資料善用 gh-pages分支功能 無料架設靜態網站使用 GitHub 免費製作個人網站使用 GitHub Pages 打造簡易短網址系統使用 GitHub Pages 展示你的 Single Page Applicationgithub pages与travis ci运作原理