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: [email protected]
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 ที่น้อยกว่าหนึ่งตัวหมายถึงชิ้นส่วนที่เคลื่อนไหวของโครงสร้างพื้นฐานน้อยลง
ฉันหวังว่าสิ่งนี้จะช่วยคุณในทางใดทางหนึ่งในระหว่างโครงการเว็บไซต์คงที่ครั้งต่อไปของคุณ อ่านต่อและสนุกกับการเขียนโค้ด