Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Jekyll 설정 파일을 동적으로 생성하는 방법

정적 사이트 생성기인 Jekyll은 _config.yml을 사용합니다. 구성을 위해. 구성은 모두 Jekyll 전용입니다. 하지만 이러한 파일에서 자체 콘텐츠로 변수를 정의하고 웹사이트 전체에서 사용할 수도 있습니다. 이 기사에서는 Jekyll 구성 파일을 동적으로 생성할 때의 몇 가지 이점을 강조하겠습니다.

로컬 랩톱에서 다음 명령을 사용하여 Jekyll 웹사이트를 테스트용으로 제공합니다.

bundle exec jekyll serve --incremental --config _config.yml

여러 구성 파일 결합

로컬 테스트 중에 구성 옵션을 재정의해야 하는 경우가 있습니다. 내 웹사이트의 현재 _config.yml 설정은 다음과 같습니다.

# Jekyll Configuration

# Site Settings
url: "https://notes.ayushsharma.in"
website_url: "https://notes.ayushsharma.in/"
title: ayush sharma's notes ☕ + ? + ?️
email: ayush@ayushsharma.in
images-path: /static/images/
videos-path: /static/videos/
js-path: /static/js/
baseurl: "" # the subpath of your site, e.g. /blog

로컬 jekyll serve URL이 http : //localhost:4000이면 위에서 정의한 URL이 작동하지 않습니다. 항상 _config.yml 사본을 생성할 수 있습니다. _config-local.yml로 모든 값을 바꿉니다. 하지만 더 쉬운 옵션이 있습니다.

Jekyll을 사용하면 이전 선언보다 나중 선언으로 많은 구성 파일을 지정할 수 있습니다. 즉, 새로운 _config-local.yml을 정의할 수 있습니다. 다음 코드로:

url:""

그런 다음 위의 파일을 기본 _config.yml과 결합할 수 있습니다. 이렇게:

bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml

두 파일을 결합하여 url의 최종 값 이 jekyll serve에 대해 비어 있을 것입니다. 이렇게 하면 내 웹사이트에 정의된 모든 URL이 상대 URL로 바뀌고 내 로컬 랩톱에서 작동합니다.

동적 구성 파일 결합

간단한 예로 웹사이트에 현재 날짜를 표시하려고 한다고 가정합니다. 이에 대한 bash 명령은 다음과 같습니다.

> date '+%A, %d %B %Y'
Saturday, 16 October 2021

맞춤 콘텐츠에도 Jekyll의 _config.yml을 사용할 수 있다는 것을 알고 있습니다. 위의 날짜를 새로운 Jekyll 설정 파일로 출력하겠습니다.

my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml

이제 _config-data.yml 포함:

my_date: "Saturday, 16 October 2021"

새 구성 파일을 다른 구성 파일과 결합하고 my_date를 사용할 수 있습니다. 내 웹사이트의 변수

bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml

위 명령을 실행하면 {{ site.my_date }} 구성된 값을 출력합니다.

결론

위의 예는 매우 간단하지만 가능성은 무한합니다. Bash, Python 및 기타 프로그래밍 언어는 Jekyll 구성 파일을 동적으로 생성할 수 있습니다. 그런 다음 build 중에 이들을 결합할 수 있습니다. 또는 serve 프로세스.

findmymastodon.com의 경우 Python을 사용하여 Mastodon 사용자 통계를 가져오고 있습니다. 그런 다음 이를 새 _config-data.yml 파일(현재 수동)에 작성합니다. 마지막으로 홈 페이지 및 기타 항목은 구성 파일에서 이를 표시합니다. 이렇게 하면 동적 백엔드를 활용하면서 내가 좋아하는 정적 웹사이트의 장점을 모두 유지할 수 있습니다.

이것이 귀하의 정적 웹사이트에 대한 몇 가지 아이디어를 촉발했기를 바랍니다. Jamstack은 정적 웹사이트에 적합하지만 동적 콘텐츠를 위한 전체 API 백엔드 생성을 피할 수 있습니다. 대신 빌드 작업을 사용하여 업데이트된 콘텐츠로 구성 파일을 생성하지 않는 이유는 무엇입니까? 모든 사용 사례에 적합하지 않을 수 있지만 API가 하나 줄어들면 인프라 이동 부품이 줄어듭니다.

이것이 다음 정적 웹 사이트 프로젝트에서 어떤 식으로든 도움이 되기를 바랍니다. 계속 읽으시고 즐거운 코딩하세요.