Parklife 是一個 Ruby 函式庫,用於將 Rack 應用程式(Rails/Sinatra/etc)渲染到靜態站點,以便由 Netlify、Now、GitHub Pages、S3 或其他靜態伺服器提供服務。
將 Parklife 新增至應用程式的 Gemfile 並執行捆綁安裝。
gem 'parklife'
現在產生 Parkfile 設定檔和建置腳本。透過傳遞--rails
或--sinatra
包含一些特定於 Rails 或 Sinatra 的設置,建立 GitHub Actions 工作流程來產生 Parklife 構建,並透過傳遞--github-pages
將其推送到 GitHub Pages。
$ bundle exec parklife init
Parklife 在專案的根目錄中配置了一個名為Parkfile
的文件,以下是一個虛構的 Rails 應用程式的Parkfile
範例:
# Load Parklife's Rails-specific integration which, among other things, allows
# you to use URL helpers within the `routes` block below.
require 'parklife/rails'
# Load the Rails application, this gives you full access to the application's
# environment from this file - using models for example.
require_relative 'config/environment'
Parkfile . application . routes do
# Start from the homepage and crawl all links.
root crawl : true
# Some extra paths that aren't discovered while crawling.
get feed_path ( format : :atom )
get sitemap_path ( format : :xml )
# A couple more hidden pages.
get easter_egg_path , crawl : true
# Services typically allow a custom 404 page.
get '404.html'
end
列出上述 Parklife 應用程式中包含的路線以及parklife routes
將輸出以下內容:
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
現在您可以執行parklife build
,它將取得所有路線並將它們儲存到build
目錄中,準備用作靜態網站。檢查建置目錄可能如下所示:
$ find build -type f
build/404.html
build/about/index.html
build/blog/index.html
build/blog/2019/03/07/developers-developers-developers/index.html
build/blog/2019/04/21/modern-life-is-rubbish/index.html
build/blog/2019/05/15/introducing-parklife/index.html
build/easter_egg/index.html
build/easter_egg/surprise/index.html
build/index.html
build/location/index.html
build/feed.atom
build/sitemap.xml
Parklife 不了解資產(映像、CSS 等),因此您可能還需要產生這些資產並將它們複製到建置目錄,請參閱 Rails 範例的完整建置腳本以了解如何執行此操作。
查看此儲存庫中的 Rails、Rack 和 Sinatra 工作範例。
有時您需要指向連結的完整 URL - 可能是供稿或社交標籤 URL。您可以透過設定其base
來告訴 Parklife 使用特定協定/主機發出模擬請求,以便 Rails *_url
幫助程式將指向正確的主機:
Parklife . application . config . base = 'https://foo.example.com'
基本 URL 也可以在建置時傳遞,這將覆蓋 Parkfile 設定:
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
)預設情況下,Parklife 將檔案儲存在嵌套在與路徑同名的目錄中的index.html
檔案中 - 因此路線/my/nested/route
儲存在/my/nested/route/index.html
中。這是為了確保應用程式內的連結無需修改即可運作,從而使任何靜態伺服器更容易託管建置。
但是,可以關閉此功能,以便/my/nested/route
儲存在/my/nested/route.html
中。這允許您透過使用 GitHub Pages 或 Netlify 的漂亮 URL 功能或某些自訂 nginx 設定來提供尾部無斜線 URL。
Parklife . application . config . nested_index = false
建置目錄不應該存在,並且在每次建置之前被銷毀並重新建立。預設build
.
Parklife . application . config . build_dir = 'my/build/dir'
預設情況下,如果 Parklife 在獲取路線時遇到 404 回應,它將引發異常( :error
設定)並停止建置。其他值是:
:warn
- 向stderr
輸出一則訊息,儲存回應,然後繼續處理。:skip
- 默默地忽略並且不保存回應,並繼續處理。 Parklife . application . config . on_404 = :warn
如果您不使用 Rails 配置,則需要自行定義它,請參閱範例。
Parklife . application . config . app
該 gem 根據 MIT 授權條款作為開源提供。
在 Parklife 專案的程式碼庫、問題追蹤器、聊天室和郵件清單中進行互動的每個人都應遵守行為準則。