Netlify初嘗試
這幾天在尋找有沒有可以代替github page的免費服務,
因為github page是公開在github上的,整個repo都可以讓github user搜尋的到
沒有去試private repo,不確定private repo可不可以正常瀏覽github page
找替代方案
Google搜尋 “Github Page Alternative”後,的第一個網站,
這網站有很多服務的比較,並且附上使用者的測評,
不過有一點我很不解的是,我只是要static page的服務,這網站還推Linodo, DO, Vultr這種VPS
我TM就只是要靜態網頁你推VPS衝殺小,聽不懂人話?
第一個推GitLab可以理解,但之後推的不知道是三小,跟Github page差的遠了
看了等於沒看,很多服務都是我不需要的,搞不懂= =
後來找第二個,發現了Netlify 這個服務,好像真D不錯
Github Page的功能這邊都有,而且還更多,並且免費。。。
Netlify
這個服務可以連結github帳戶,把repo裡的代碼拉過來建網頁,
也支持hexo的deploy,而且這網站支援CI的功能,
hexo的發布需要經過3個步驟
1 | hexo clean //清除舊的public資料夾 |
仔細一看好像挺簡單的,不過每次發布新內容都要經過這些動作,
難免感到厭煩ㄅ。。。
netlify的CI功能,會偵測repo是否有變動,只要有新的push,
就會自動幫我們重新部署一次,
所以只要把整個hexo的原碼推上github
只要有推新的文章,不需要經過靜態網頁產生的步驟,
netlify就會自動幫我們做部屬,省下不少繁瑣的步驟
所以想說就來試試看
第三方主題
這邊要一提的是,如果hexo有使用第三方主題的話,
必須要使用git submodule的方式安裝,比如說我安裝next theme,
submodule允許將另一個repo的內容clone到自己的項目裡,並且原項目若有更新,
也可以即時取得更新,
若要在netlify上使用第三方主題,
就必須使用這個方式安裝主題,不然build時會報錯
要這樣安裝
1 | git submodule add https://github.com/theme-next/hexo-theme-next themes/next` |
安裝之後就在主目錄下可以看到.gitmodules紀錄這個module在項目中的位置和repo地址
之後blog原碼正常push到github就行
這邊要注意的一點就是,如果對主題本身有做更動的話,就必須要先fork一份主題的repo到自己的repo,
然後修改完之後在push上去,在安裝主題的時候,就要安裝自己fork過來的版本了
private repo
如果repo本身是private的話是還好,因為netlify會自動連結github上的所有repo,
前提是你有允須他做連結的話,
不過若當中有submodule是private,正常的build會報錯,
因為netlify無法連結它,解決方法如下
- 如果要用https連接的repo,直接將.submodule檔案的repo地址改成 的方式,將帳號密碼直接寫在URL裡面,這樣netlify就可以連結到了
1
https://<repo_username>:<repo_password>@github.com/<repo_owner>/<repo_name>.git
- 使用SSH方式,先在netlify的deploy裡面找到deploy key

複製下來,再到對應的github private repo裡面(就是那個submodule),的這個地方
新增一個deploy key,剛剛從netlify複製的代碼,儲存
接下來,把.submodule檔案裡的repo地址改成ssh形式push上github,再到netlify build就能成功連結了1
git@github.com:<repo_owner>/<repo_name>.git
基於我不想把帳號密碼放在github裡面,因為submodule畢竟也是要push上github的東西
所以我採用第二種形式,雖然比較麻煩就是了
後記
光是private repo的部分解決就爬了不少文,花了不少時間
老實說,如果一班使用來講,直接用github page就完事了
剛接觸netlify還真的瞎折騰了好久
耗掉不少時間