從 0.x 升級到 2.x
要從舊版的 Jekyll 升級嗎?在 1.0 和 2.0 中有一些變更,您需要了解。
在我們深入探討之前,請先取得 Jekyll 的最新版本
gem update jekyll
深入探討
想要快速建立並執行一個新的 Jekyll 網站嗎?只要執行 jekyll new SITENAME
即可建立一個包含基本架構的 Jekyll 網站的新資料夾。
Jekyll 命令
為了更清楚,Jekyll 現在接受 build
和 serve
命令。以前您可能只要執行 jekyll
命令來產生網站,並執行 jekyll --server
來在本地端檢視網站,但在 v2.0(及後續版本)中,您應該使用 jekyll build
和 jekyll serve
子命令來建置和預覽您的網站。
觀看和服務
使用新的子指令後,網站本地預覽的方式會有些許改變。不用在網站的設定檔中指定 server: true
,請使用 jekyll serve
。對於 watch: true
也是一樣。請改用 --watch
旗標,搭配 jekyll serve
或 jekyll build
使用。
絕對永久連結
在 Jekyll v1.0 中,我們為子目錄中的頁面引入了絕對永久連結。從 v2.0 開始,絕對永久連結為取消選擇,表示 Jekyll 預設會使用絕對永久連結,而非相對永久連結。在 v3.0 中已移除相對永久連結的向後相容性。
v3.0 及後續版本將需要絕對永久連結
從 Jekyll v3.0 開始,將移除相對永久連結功能,因此無法使用。
草稿文章
Jekyll 現在讓您撰寫草稿文章,並讓您在發布前輕鬆預覽文章的外觀。若要開始撰寫草稿,請在網站的來源目錄中建立一個名為 _drafts
的資料夾(例如,與 _posts
並列),並新增一個 markdown 檔案到其中。若要預覽您的新文章,請執行 jekyll serve
指令,並搭配 --drafts
旗標。
草稿沒有日期
與文章不同,草稿沒有日期,因為它們尚未發布。請勿將您的草稿命名為類似 2013-07-01-my-draft-post.md
的名稱,請直接將檔案命名為您最終希望文章標題的名稱,例如 my-draft-post.md
。
自訂設定檔
現在您可以傳遞整個自訂 Jekyll 設定檔,而不用透過命令列傳遞個別旗標。這有助於區分環境,或讓您以程式方式覆寫使用者指定的預設值。將 --config
旗標新增到 jekyll
命令,後接一個或多個設定檔的路徑(以逗號分隔,無空格)。
因此,下列命令列旗標現已不建議使用
--no-server
--no-auto
(現在為--no-watch
)--auto
(現在為--watch
)--server
--url=
--maruku
、--rdiscount
和--redcarpet
--pygments
--permalink=
--paginate
config 旗標明確指定您的設定檔
如果您使用 --config
旗標,Jekyll 會忽略您的 _config.yml
檔案。想要合併自訂設定與一般設定嗎?沒問題。Jekyll 會透過命令列接受多個自訂設定檔。設定檔從右至左串接,因此,如果我執行 jekyll serve --config _config.yml,_config-dev.yml
,當兩個設定檔包含相同金鑰時,右邊設定檔(_config-dev.yml
)中的值會覆寫左邊設定檔(_config.yml
)中的值。
新的設定檔選項
Jekyll 1.0 引入了幾個新的設定檔選項。在升級之前,您應該檢查 1.0 之前的設定檔中是否包含這些選項,如果有的話,請確定您正確使用它們
excerpt_separator
host
包含
保留檔案
配置
顯示草稿
時區
網址
基本網址
通常,您會希望能夠在多個地方執行 Jekyll 網站,例如在推送到 GitHub Pages 之前在本地進行預覽。Jekyll 1.0 使用新的 --baseurl
旗標讓這變得更容易。若要利用此功能,請先將製作 baseurl
新增到您網站的 _config.yml
檔案。然後,在整個網站中,使用 {{ site.baseurl }}
為相對網址加上字首。當您準備在本地預覽您的網站時,請將 --baseurl
旗標與您的本地基本網址(最可能是 /
)傳遞給 jekyll serve
,而 Jekyll 將會交換您傳遞的任何內容,確保您的所有連結在兩個環境中都能如您預期般運作。
所有頁面和文章網址都包含前導斜線
如果您使用上述方法,請記住所有文章和頁面的網址都包含前導斜線。因此,串接網站基本網址和文章/頁面網址(其中 site.baseurl = /
和 post.url = /2013/06/05/my-fun-post/
)將會產生兩個前導斜線,這會中斷連結。因此建議僅在 baseurl
是除了預設 /
之外的其他項目時,才使用 site.baseurl
加上字首。