從 0.x 升級到 2.x

要從舊版的 Jekyll 升級嗎?在 1.0 和 2.0 中有一些變更,您需要了解。

在我們深入探討之前,請先取得 Jekyll 的最新版本

gem update jekyll
深入探討

想要快速建立並執行一個新的 Jekyll 網站嗎?只要執行 jekyll new SITENAME 即可建立一個包含基本架構的 Jekyll 網站的新資料夾。

Jekyll 命令

為了更清楚,Jekyll 現在接受 buildserve 命令。以前您可能只要執行 jekyll 命令來產生網站,並執行 jekyll --server 來在本地端檢視網站,但在 v2.0(及後續版本)中,您應該使用 jekyll buildjekyll serve 子命令來建置和預覽您的網站。

觀看和服務

使用新的子指令後,網站本地預覽的方式會有些許改變。不用在網站的設定檔中指定 server: true,請使用 jekyll serve。對於 watch: true 也是一樣。請改用 --watch 旗標,搭配 jekyll servejekyll build 使用。

在 Jekyll v1.0 中,我們為子目錄中的頁面引入了絕對永久連結。從 v2.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 加上字首。