Mimariye Genel Bakış
Paket Yapısı
Shevky çoklu paket sistemi olarak düzenlenmiştir:
| Paket | Rol |
|---|---|
@shevky/base | Paylaşılan yardımcı programlar: config, i18n, io, log, format, exec, eklenti sözleşmesi |
@shevky/core | CLI, işlem hattı, motorlar, kayıtlar, içerik modeli oluşturma |
@shevky/plugin-* | Proje yapılandırmasından yüklenen isteğe bağlı derleme uzantıları |
Bağımlılık yönü: eklentiler base'a bağlıdır; çekirdek base'e bağlıdır; core, derleme sırasında eklentileri dinamik olarak içe aktarır.
Çalışma Zamanı Giriş Noktaları
- CLI ikili dosyası:
core/shevky.js(hashbang Node.js betiği) - Gönderici:
core/scripts/main.js(rotalar--build,--dev,--init, vb.) - İşlem hattını oluşturun:
core/scripts/build.js(execute()işlevi)
Yaşam Döngüsü Oluşturun
core/scripts/build.js içindeki derleme hattı şu aşamaları yürütür:
dist/öğesini temizleyin ve yeniden oluşturun.dist:cleaneklenti kancasını çalıştırın.- Statik varlıkları
src/assets/'dan kopyalayın. assets:copyeklenti kancasını çalıştırın.- Markdown içeriğini
src/content/adresinden yükleyin. content:loadeklenti kancasını çalıştırın.- Menüler ve içerik koleksiyonları (etiketler, kategoriler, seriler) oluşturun.
content:readyeklenti kancasını çalıştırın.- Sayfaları işleyin (sayfa başına
page:metakancası, ardından Mustache + İşaretleme -> HTML). - Sayfaları
dist/olarak yıkayın. - Çıktı takma adlarını uygulayın.
Dahili Bileşenler
Motorlar
| Motor | Dosya | Amaç |
|---|---|---|
| EklentiEngine | core/engines/pluginEngine.js | Kanca başına bağlamla kanca yürütme |
| RenderEngine | core/engines/renderEngine.js | Mustache + İşaretleme oluşturma, HTML dönüştürmeleri |
| MenüMotor | core/engines/menuEngine.js | Navigasyon menüsü oluşturma |
| MetaEngine | core/engines/metaEngine.js | URL çözünürlüğü, site meta verileri, alternatif bağlantılar |
Kayıtlar
| Kayıt | Dosya | Amaç |
|---|---|---|
| Eklenti Kaydı | core/registries/pluginRegistry.js | Eklentilerin dinamik olarak içe aktarılması ve önbelleğe alınması |
| İçerik Kaydı | core/registries/contentRegistry.js | İçerik yükleme, tekilleştirme, koleksiyon oluşturma |
| ŞablonKayıt | core/registries/templateRegistry.js | Mustache şablonu türe göre yükleniyor |
| Sayfa Kaydı | core/registries/pageRegistry.js | Arabelleğe alınmış sayfa çıktısı |
Veri Akışı
- İşaretleme dosyaları ->
ContentRegistry->ContentFilenesneleri - Şablonlar ->
TemplateRegistry-> Mustache dizeleri - İçerik + şablonlar ->
RenderEngine-> HTML dizeleri - HTML ->
PageRegistry->dist/dosyaları
Eklentiler içerik ekleyebilir (content:load), içeriği işleyebilir (content:ready) ve sayfa meta verilerini zenginleştirebilir (page:meta).
Uzatma Noktaları
- Eklenti kancaları:
dist:clean,assets:copy,content:load,content:ready,page:meta content.collectionsyapılandırması aracılığıyla özel koleksiyonlar- Takma adların çıktısını
build.outputAliasesaracılığıyla alın build.contentRootDirectoriesaracılığıyla içerik kök dizinleri