içeriğe atla

Statik site jeneratörü seçerken neye baktım

Üç aday vardı: Astro, Hugo, Eleventy. Üçü de statik çıktı üretiyor, üçü de markdown okuyor. Karar, ortak özelliklerde değil, ayrıldıkları yerde verildi.

Kriterler

Sıraladığım şey şuydu:

  1. Varsayılan JavaScript yükü ne kadar.
  2. Bileşen yazmak ne kadar rahat.
  3. Frontmatter’daki bir hatayı build zamanında yakalıyor mu.

İlk madde üçünde de iyi. Hugo ve Eleventy sıfır JS gönderiyor, Astro da varsayılan olarak öyle. Yani bu kriter kimseyi elemedi.

Ayrım noktası

İkinci ve üçüncü madde Astro’yu öne çıkardı. Hugo’nun şablon dili hızlı ama bir bileşen soyutlaması sunmuyor, kısmi şablonlarla idare ediyorsun. Eleventy esnek, fakat esnekliğin bedeli her şeyi kendin kurman.

Astro’nun content collections’ı frontmatter’ı bir şemayla doğruluyor:

const blog = defineCollection({
  schema: z.object({
    title: z.string(),
    pubDate: z.coerce.date(),
  }),
});

Eksik bir pubDate build’i kırıyor. Sessizce undefined geçip sayfada “Invalid Date” yazmıyor. Tek başına bu, seçimi belirledi.

Seçmediğim şeyin maliyeti

Hugo’nun build hızını kaybettim. Bu sitede yüz kadar dosya var, aradaki fark saniyenin altında. Beş bin dosyalık bir sitede tekrar düşünürdüm.