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

ฉันรู้ว่าฉันสามารถใช้ _config.yml ของ Jekyll สำหรับเนื้อหาที่กำหนดเองได้เช่นกัน ฉันจะส่งออกวันที่ข้างต้นเป็นไฟล์กำหนดค่า 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 ที่น้อยกว่าหนึ่งตัวหมายถึงชิ้นส่วนที่เคลื่อนไหวของโครงสร้างพื้นฐานน้อยลง

ฉันหวังว่าสิ่งนี้จะช่วยคุณในทางใดทางหนึ่งในระหว่างโครงการเว็บไซต์คงที่ครั้งต่อไปของคุณ อ่านต่อและสนุกกับการเขียนโค้ด