Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách tôi tạo động các tệp cấu hình Jekyll

Jekyll, trình tạo trang web tĩnh, sử dụng _config.yml để cấu hình. Các cấu hình đều dành riêng cho Jekyll. Nhưng bạn cũng có thể xác định các biến với nội dung của riêng chúng tôi trong các tệp này và sử dụng chúng trên toàn bộ trang web của bạn. Trong bài viết này, tôi sẽ nêu bật một số ưu điểm của việc tạo động các tệp cấu hình Jekyll.

Trên máy tính xách tay cục bộ của mình, tôi sử dụng lệnh sau để phục vụ trang web Jekyll của mình để thử nghiệm:

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

Kết hợp nhiều tệp cấu hình

Trong quá trình thử nghiệm cục bộ, đôi khi cần ghi đè các tùy chọn cấu hình. _Config.yml hiện tại của trang web của tôi có các cài đặt sau:

# 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 cục bộ URL là https:// localhost:4000, URL được xác định ở trên sẽ không hoạt động. Tôi luôn có thể tạo bản sao của _config.yml dưới dạng _config-local.yml và thay thế tất cả các giá trị. Nhưng có một lựa chọn dễ dàng hơn.

Jekyll cho phép chỉ định nhiều tệp cấu hình với các khai báo sau ghi đè lên các khai báo trước. Điều này có nghĩa là tôi có thể xác định một _config-local.yml mới với mã sau:

url:""

Sau đó, tôi có thể kết hợp tệp ở trên với _config.yml chính của mình như thế này:

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

Bằng cách kết hợp cả hai tệp, giá trị cuối cùng của url cho jekyll serve này sẽ trống. Điều này biến tất cả các URL được xác định trong trang web của tôi thành các URL tương đối và làm cho chúng hoạt động trên máy tính xách tay cục bộ của tôi.

Kết hợp các tệp cấu hình động

Ví dụ đơn giản, giả sử bạn muốn hiển thị ngày hiện tại trên trang web của mình. Lệnh bash cho điều này là:

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

Tôi biết mình cũng có thể sử dụng _config.yml của Jekyll cho nội dung tùy chỉnh. Tôi sẽ xuất ngày trên thành tệp cấu hình Jekyll mới.

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

Bây giờ _config-data.yml chứa:

my_date: "Saturday, 16 October 2021"

Tôi có thể kết hợp tệp cấu hình mới của mình với các tệp khác và sử dụng my_date trên trang web của tôi.

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

Khi chạy lệnh trên, {{ site.my_date }} xuất ra giá trị đã định cấu hình của nó.

Kết luận

Ví dụ trên khá đơn giản, nhưng khả năng là vô tận. Bash, Python và các ngôn ngữ lập trình khác có thể tạo động các tệp cấu hình Jekyll. Sau đó, tôi có thể kết hợp chúng trong quá trình build hoặc serve quy trình.

Đối với findmymastodon.com, tôi đang sử dụng Python để tìm nạp thống kê người dùng Mastodon. Sau đó, tôi sẽ viết chúng vào một tệp _config-data.yml mới (hiện tại theo cách thủ công). Cuối cùng, trang chủ và các trang khác hiển thị những thứ này từ tệp cấu hình. Bằng cách này, tôi có thể tận dụng chương trình phụ trợ động và vẫn giữ được tất cả tính tốt của trang web tĩnh mà tôi rất yêu thích.

Tôi hy vọng điều này đã khơi dậy một số ý tưởng cho các trang web tĩnh của riêng bạn. Jamstack rất tốt cho các trang web tĩnh, nhưng bạn có thể tránh tạo toàn bộ phần phụ trợ API cho nội dung động. Thay vào đó, tại sao không sử dụng công việc xây dựng để tạo tệp cấu hình với nội dung cập nhật? Nó có thể không phù hợp với mọi trường hợp sử dụng, nhưng một API ít hơn có nghĩa là ít bộ phận chuyển động cơ sở hạ tầng hơn.

Tôi hy vọng điều này sẽ giúp bạn một phần nào đó trong dự án trang web tĩnh tiếp theo của bạn. Hãy tiếp tục đọc và viết mã vui vẻ.