biagiojs

Struttura progetto

mio-sito/
├── biagio.config.js       # site, images, fonts, cache, deploy
├── pages/                 # una pagina per file → route automatica
│   ├── index.page.biagio  # → /
│   ├── about.page.biagio  # → /about/
│   └── blog/[slug].page.js
├── islands/               # moduli client ESM (vanilla, React, Preact…)
├── content/               # Markdown + frontmatter (collections)
├── images/                # sorgenti → dist/img/ (richiede sharp)
├── public/                # copiato in dist/ (favicon, _headers…)
├── locales/               # traduzioni (se site.locales)
├── reports/               # field data per l'optimizer (opzionale)
└── dist/                  # output build — non committare

Routing

Il nome del file è la route:

FileURL
pages/index.page.biagio/
pages/chi-siamo.page.biagio/chi-siamo/
pages/blog/[slug].page.js/blog/<slug>/ per ogni getStaticPaths()

Estensioni supportate: .page.biagio, .page.js, .page.ts.

Routing i18n

Con site.locales: ['en', 'it'] e defaultLocale: 'en':

FileIngleseItaliano
pages/index.page.js//it/
pages/docs/index.page.js/docs//it/docs/

Traduzioni UI in locales/<lang>.json. Le content collection usano content/blog/ (default) e content/blog/it/ (italiano).

Config (biagio.config.js)

ChiaveScopo
site.nameNome sito, meta title fallback
site.baseUrlCanonical, sitemap, Open Graph
site.localesLista lingue per i18n
site.defaultLocaleLingua senza prefisso URL
site.imagesPipeline sharp, profili, remote
site.fontsGoogle Fonts self-hosted, subset
site.cacheGenera dist/_headers per CDN
site.deployPreset Cloudflare / Vercel / Netlify
site.consentBanner GDPR nativo o vendor
site.localesi18n con route /en/…
hooksbeforeImages, head, afterFonts…

Content collections

Markdown in content/<nome>/ con frontmatter YAML:

---
title: Il mio articolo
date: 2026-07-07
slug: mio-articolo
---

# Contenuto

Caricamento in pagine dinamiche:

export function getStaticPaths({ getCollection }) {
  return getCollection('content/blog').map(p => ({
    params: { slug: p.slug },
    props: { post: p },
  }));
}

Dipendenze consigliate

npm i -D sharp vite    # immagini + dev con HMR
npm i -D subset-font   # solo se site.fonts.subset è attivo

biagiojs stesso non ha dipendenze obbligatorie in runtime.