使用 Jekyll 與 Bundler

2018 年 3 月 6 日 mkasberg mkasberg

Bundler 透過追蹤和安裝所需的正確寶石和版本,為 Ruby 專案提供一致的環境。

Bundler 可以是與 Jekyll 搭配使用的絕佳工具。由於它會追蹤每個專案的相依性,因此如果您需要在不同的專案中執行不同版本的 Jekyll,它會特別有用。

此外,由於它可以(選擇性地)在專案資料夾中安裝相依性,因此它可以協助您避免可能會遇到的權限問題。使用 Jekyll 的一般方式是將 Jekyll 安裝到系統的預設寶石安裝目錄,然後執行 jekyll new。在本教學中,我們將向您展示如何使用 Bundler 建立新的 Jekyll 專案,且不需在專案目錄外安裝寶石。

這並非開始使用 Jekyll 的最簡單方式

本教學協助您使用 Bundler 設定 Jekyll,並選擇性地不進行任何系統範圍的寶石安裝。如果您偏好將 jekyll 指令安裝到預設的寶石安裝目錄,您可能需要 快速入門

開始之前

要完成本教學課程,您需要安裝 RubyBundler。您可以在其網站上找到安裝說明。

初始化 Bundler

首先,為您的專案建立一個新目錄,並執行 bundle init。這會建立一個新的 Bundler 專案(透過建立一個空的 Gemfile)。

mkdir my-jekyll-website
cd my-jekyll-website
bundle init

設定 Bundler 安裝路徑

此步驟為選用。在此步驟中,我們將設定 Bundler 在專案子目錄 ./vendor/bundle/ 中安裝 gem。這樣做的優點是 bundler 會在您的專案資料夾中安裝 gem,而不是 gem install 使用的位置。這可以協助您避免在安裝 gem 時出現權限錯誤,具體取決於您安裝 Ruby 的方式。如果您略過此步驟,Bundler 會將您的相依性安裝到 gem install 使用的位置。

bundle config set --local path 'vendor/bundle'
Bundler 設定為持續性

此步驟每個專案只需要執行一次。Bundler 會將您的設定儲存在 ./.bundle/config 中,因此後續的 gem 都會安裝到相同的位置。

新增 Jekyll

現在,我們將使用 Bundler 將 Jekyll 新增為新專案的相依性。此指令會將 Jekyll gem 新增到我們的 Gemfile,並將其安裝到 ./vendor/bundle/ 資料夾(如果您未設定自訂路徑,則會安裝到您的預設 gem 安裝目錄)。

bundle add jekyll

建立 Jekyll 架構

安裝 Jekyll 之後,我們可以使用它為我們的網站建立架構。我們需要 --force 參數,因為我們的資料夾並非空白 - 其中已有一些 Bundler 檔案。我們另外執行 bundle install,因為如果 Gemfile 已存在,Jekyll 會感到混淆。

bundle exec jekyll new --force --skip-bundle .
bundle install

提供網站服務

您的新網站已準備就緒!您可以使用 bundle exec jekyll serve 來提供網站服務,並在 http://127.0.0.1:4000 瀏覽網站。從這裡開始,您可以自行繼續開發網站。所有一般的 Jekyll 指令都可供您使用,但您應該在指令前加上 bundle exec,以便 Bundler 執行專案資料夾中已安裝的 Jekyll 版本。

提交至版本控制

如果您將新網站儲存在版本控制中,您會希望忽略 ./vendor/./.bundle/ 資料夾,因為它們包含使用者或平台特定的資訊。新使用者將能夠根據 GemfileGemfile.lock 安裝正確的依賴項,這兩個檔案都應該檢查。如果您願意,可以使用這個 .gitignore 來開始。

.gitignore

# Ignore metadata generated by Jekyll
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata

# Ignore folders generated by Bundler
.bundle/
vendor/