Parklife는 Netlify, Now, GitHub Pages, S3 또는 다른 정적 서버에서 서비스할 수 있도록 Rack 앱(Rails/Sinatra/etc)을 정적 사이트로 렌더링하는 Ruby 라이브러리입니다.
애플리케이션의 Gemfile에 Parklife를 추가하고 번들 설치를 실행합니다.
gem 'parklife'
이제 Parkfile 구성 파일과 빌드 스크립트를 생성합니다. --rails
또는 --sinatra
전달하여 일부 Rails 또는 Sinatra 관련 설정을 포함하고, GitHub Actions 워크플로를 생성하여 Parklife 빌드를 생성하고 --github-pages
전달하여 GitHub 페이지에 푸시합니다.
$ 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
이제 모든 경로를 가져오고 이를 정적 사이트로 제공할 준비가 된 build
디렉터리에 저장하는 parklife 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을 가리켜야 하는 경우도 있습니다. Rails *_url
도우미가 올바른 호스트를 가리키도록 base
설정하여 Parklife에게 특정 프로토콜/호스트로 모의 요청을 하도록 지시할 수 있습니다.
Parklife . application . config . base = 'https://foo.example.com'
Parkfile 설정을 재정의하는 기본 URL을 빌드 시 전달할 수도 있습니다.
$ 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 페이지 또는 Netlify의 Pretty 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 프로젝트의 코드베이스, 이슈 추적기, 채팅방 및 메일링 목록에서 상호 작용하는 모든 사람은 행동 강령을 따라야 합니다.