使用vuepress搭建GitHub pages靜態部落格頁面

站住,別跑發表於2020-09-08

vuepress官網 vuepress是尤大開發來寫文件的靜態頁面。可以用Markdown 語法,並且也可以使用vue模組化的方式開發頁面。

vuepress-theme-reco 是另外的開發者開發的 vuepress主題。本文將介紹依賴這個主題,構建GitHub pages靜態部落格的詳細過程

 

提前說明:本過程比較詳細,相當於手把手的教,針對於不熟悉vuepress的人介紹的,大佬不喜勿噴。

 

第一步:新建一個GitHub倉庫

1. 倉庫名隨便取,不用以 username.github.io 這種方式。

2. 倉庫不要選 private ,不然不能釋出為GitHub pages。

3. 選擇新增一個README檔案,雖然沒什麼作用,因為後面要覆蓋。

 

第二步:克隆新建倉庫的git地址,初始化專案

  1.  cmd 中執行 git clone 剛才複製的 git 地址 

  2.  推薦使用yarn 來進行安裝,不然有可能會有其它不可未知的錯誤 

  3.  執行 yarn global add @vuepress-reco/theme-cli  安裝全域性主題腳手架。安裝完成後:

 

   4. 執行  theme-cli init  然後會提示你選擇一些東西:

注意:最後一個讓選擇主頁是什麼樣式的時候,有三種主題 blog,doc,afternoon-grocery。

我三個都試了一下,

  • blog與doc感覺基本上一樣
  • afternoon-grocery 目錄和vuepress標準的目錄一致,文章都放到view資料夾裡
  • 和前兩個相比,多了選擇顏色主題的功能(並非明暗);但是首頁右邊分類 個人認為沒有 blog或者doc的好看。
  • 還多了個全屏的功能 

所以我選擇了blog 主題。怎麼選擇就看你自己了。 

注意:如果 yarn 過程出現錯誤,比如類似的:

 需要先把 yarn.lock 刪掉 再重新安裝。那裡面的庫路徑有問題。 

  5. 如果是安裝的blog或者doc,那麼安裝完成之後,如果package.json中的dev項有  --open --host localhost ,要改成 vuepress dev . 不然執行不起。注意有個點,不過這個點可有可無。 

  6. 改完之後,執行 yarn dev  等待編譯完成,就能看到本地執行的 url 地址,開啟即可看到頁面了

 

第三步:推到GitHub 自動轉換成GitHub pages。步驟是blog主題

在上傳程式碼到GitHub之前,需要改一些程式碼,不然上傳上去 在GitHub pages裡顯示的就是404

1. 修改程式碼,push程式碼

(1) 根目錄 .vuepress 下的config.js 中的dest項去掉,使用預設的打包後的路徑,及: .vuepress/dist 。不過這項不重要,用自定義的也可以,後面新建指令碼的時候,路徑對上即可

(2) 在config.js 中 和剛才去掉的dest同級的地方加上  “base”:”/Blogs/”   這個Blogs 不能亂取,必須是你當前GitHub倉庫名,並且前後都有 / 斜槓!!!不然打包後靜態資源路徑會有問題。

(3) 推送程式碼到GitHub倉庫中:

git add . 
git commit -m’init’
git push

2. 新建分支

(1) 這時候,可以在GitHub的倉庫中,看到最新提交的程式碼,然後切換到setting選項

 

(2) 下拉到下面 GitHub Pages 項,如果這時候Soure裡面是none,切換成master。點選save即可。

 

(3) 頁面自動重新整理後,再拉到這個地方,就能看到已經自動釋出好了

 

(4) 但是這時候點選連結,開啟的卻是404,這是什麼原因呢?仔細看404頁面提示的原因,原來是GitHub pages 必須要有index.html,由於vuepress是Markdown語法沒有html,所以顯示不了。

(5) 我們知道打包之後的靜態檔案專案就有html檔案,所以只需要用另外的分支用來存放打包後的靜態檔案,html檔案符合GitHub pages的規則,這樣就能正確的顯示了。

(6) GitHub上 點選master分支,輸入新分支名並create branch 這時候會自動切換到blogs分支上,並且內容和master一樣。blogs分支名隨便取,只要後面釋出的時候,指令碼里面的分支名對應上即可

 

 3.  新建指令碼,自動推送到blog分支

(1)本地master分支新建一個 deploy.sh檔案 名字隨意,後面執行的時候名稱一致即可,字尾是shell的字尾名 .sh ;

# 確保指令碼丟擲遇到的錯誤
set -e

# 生成靜態檔案
yarn build

# 進入生成的資料夾,這裡是預設的路徑,可以自定義
cd .vuepress/dist

# 如果是釋出到自定義域名
# echo 'www.isunbeam.cn' > CNAME

git init
git add -A
git commit -m 'deploy'

# 如果釋出到 https://<USERNAME>.github.io/<REPO>
# git push -f git@github.com:<USERNAME>/<REPO>.git master:<BranchName>
git push -f git@github.com:isunbeam/Blogs.git master:blogs

cd -

# 最後釋出的時候執行 bash deploy.sh

(2) 注意 git push 的時候,分支名一定要和GitHub上新建的分支名一樣。

(3) 執行  bash deploy.sh  。執行完成,到GitHub的倉庫裡,切換到setting,然後拉到GitHub Pages 這時候已經發布了,但是開啟連結還是404,原因就是作為github pages的分支不正確,預設是master,下面切換成blogs,點選save即可

(4)等待頁面重新整理後,再次開啟即可看到。如果還是沒有,強制重新整理一下 ctrl + f5。可能有快取。

 

到此,你的部落格已經正常釋出到GitHub pages了。\(^o^)/~

 

下面介紹怎麼發表部落格:

先說說目錄:該目錄是選擇的blog主題

 

(1) dist 是打包後的靜態檔案

(2) public 是存放圖片等內容的

(3) config.js 是最重要的,主題的配置項

(4) blogs 是發表部落格文章的地方,第二級目錄表示分類,第三級目錄表示年份,應該是用來做時間線用的,應該不能改成其它的內容。然後年份裡面就是真正的部落格頁面,是 xxx.md 一般是以時間來命名檔案的。

  比如我現在要新建一個部落格:

  (a)在blogs 裡新建一個 2020 名稱的資料夾,裡面再新建一個 090801.md  的md文件,01表示0908號第一篇,02表示第二篇依此類推。寫好了之後儲存,直接重新整理頁面或者重啟專案,即可看到新增的部落格。md裡面的title就是部落格的標題

   (b)在寫的 md 裡面的 date 日期項,感覺不能精確到時分秒,不然時間軸 文章的日期就會多一天。比如date 是寫的 2020-09-08 18:08:08 ,時間軸中就會被解析成 2020年的9月9號發表的。所以建議不用時分秒。

   (c)如果想寫的部落格有摘要,在正文前加上  <!-- more -->  這以上的程式碼就會被解析成摘要。類似下面的文章摘要

 

(5) docs 是寫文件的地方,相當於是 左邊是大標題,右邊是大標題對應的描述內容。第二級目錄表示文件分類,和大標題的第一個內容,裡面的README.md就是內容詳情。然後裡面的其餘 .md 文件是另外的大標題的詳情,然後要想新增後生效

  比如我現在要新建一個文件說明

  (a)docs下面新建一個資料夾testdoc,在這個資料夾裡再新建一個READEME.md作為大標題1的內容頁,再建一個test1.md表示大標題2的內容頁

  (b)每個內容頁裡隨意編寫內容,但是頂部需要有Front Matter配置,然後再寫md文件。md裡面的title就是標題的名稱,而md檔名可自定義,中文都可以。寫好後,在 config.js 中去配置

  (c)Docs配置項的items裡面加上 

{
    "text": "test",
    "link": "/docs/testdoc/"
}

  (d)sidebar的配置項里加上 。陣列第一項要為空

"/docs/testdoc/": [
    "",
    "test1"
]

(6) 配置完之後,會自動構建程式碼,然後強制重新整理一下頁面 ctrl + f5 。如果未生效,就重新啟動一下專案就可以看到最新的文件了。

 

自定義域名

 如果有人還想用自己的域名,不用 <username>.github.io/Blogs/ 這種域名,那麼可以按下面的步驟來實現

第一步:把  config.js 中的 base 項註釋掉,這樣預設靜態檔案根目錄是  / ,不然釋出之後會出現靜態檔案路徑不正確的問題

第二步:把 deploy.sh 的 echo 'xxx'  > CNAME 這一項放開,並且 把 xxx 換成 自己的域名,比如我是 www.isunbeam.cn 就是 echo 'www.isunbeam.cn' > CNAME

第三步:儲存。然後重新構建專案 bash deploy.sh 即可

第四步:域名解析

  (1) 新建一個 主機值為www,記錄型別為 CNAME,記錄值為 <username>.github.io 的解析

第五步: 在 GitHub 倉庫的 setting 中,GitHub pages選項裡 有一個Custom domain,把它更新為你剛才 CNAME解析的   www.xxx.xx 。點選save即可。

 

到此,自定義域名的靜態部落格就完整搭建成功了,其餘的就剩看 vuepress-theme-reco的文件啦。O(∩_∩)O哈哈~

如果有想自己折騰的,也可以自己用元件的方式,自定義主題。(#^.^#)

 

相關文章