pyssgA tiny-kernel, plugin-driven static site generator

Kiến trúc

pyssg mượn thiết kế lõi từ webpack. Bốn ý tưởng cốt lõi chống đỡ cả hệ thống:

webpackpyssgVai trò
Tapablehệ thống hookHệ thần kinh: các lifecycle hook có kiểu rõ ràng.
CompilerBuilderBộ điều phối sống lâu; sở hữu các hook.
CompilationBuildTrạng thái của một lần build.
PluginPluginMột đối tượng có apply(builder) để tap vào hook.

Đặc tính then chốt: kernel chỉ phát ra sự kiện tại các cột mốc của vòng đời. Plugin đăng ký listener và làm phần việc thực sự - kể cả các tác vụ "lõi" như đọc file hay render Markdown cũng là plugin.

Trong mục này

  • Kernel - những gì nằm trong lõi và vì sao nó lại nhỏ đến vậy.
  • Vòng đời - các pass theo từng giai đoạn mà một lần build đi qua.
  • Hook - ba loại hook và cách thứ tự stage hoạt động.

Mô hình dữ liệu

Hai túi dữ liệu trung tính chảy qua vòng đời:

  • Source - một file đầu vào. Plugin lần lượt điền raw, body, frontmatter, contentmeta khi nó đi qua các pass.
  • Output - một file sẽ được ghi ra. Có path (tương đối với out) và content.

Kernel không bao giờ soi vào nội dung của chúng ngoài việc chuyển chúng giữa các hook; ý nghĩa của chúng hoàn toàn do plugin quyết định.