Risorse e stili

sitelo è costruito su Vite, quindi JavaScript e CSS di frontend vengono compilati automaticamente. Metti script e fogli di stile sotto src/ (per esempio src/js e src/css), collegali dal tuo HTML con URL relativi alla radice, e sitelo pensa al resto — TypeScript, import CSS, bundling e minificazione.

Struttura del progetto

Pagine e risorse condividono src/. Cartelle come js/ e css/ sono convenzioni, non obblighi — a sitelo interessa ciò che il tuo HTML referenzia, non i nomi delle cartelle.

my-site/
  src/
    index.ht.js          # pagina — restituisce HTML
    css/
      styles.css         # collegata dall’HTML → nel bundle
    js/
      main.js            # collegata dall’HTML → nel bundle
      counter.ts         # importata da main.js → anch’essa nel bundle
    lib/
      posts.js           # usata solo in data() → non viene mai pubblicata
  public/
    favicon.ico          # copiata così com’è

Collegare le risorse dall’HTML

Referenzia i file con percorsi relativi alla radice. Uno <script type="module"> o un <link rel="stylesheet"> è ciò che dice a sitelo di includere quel file nella build:

import { html, head, title, link, script, body, h1, button } from 'javascript-to-html'

export default () =>
  html({ lang: 'it' },
    head(
      title('Il mio sito'),
      link({ rel: 'stylesheet', href: '/css/styles.css' }),
      script({ type: 'module', src: '/js/main.js' }),
    ),
    body(
      h1('Ciao'),
      button({ id: 'count' }, '0'),
    ),
  )
import { createCounter } from './counter.ts'

const button = document.querySelector('#count')
const next = createCounter()

button.addEventListener('click', () => {
  button.textContent = String(next())
})
@import './tokens.css';

body {
  font-family: system-ui, sans-serif;
  margin: 0;
  padding: 2rem;
}

Cosa compila Vite

Ti servono PostCSS, Sass o altri plugin di Vite? Aggiungili sotto vite in sitelo.config.js.

Zero JS per impostazione predefinita

Validazione delle risorse mancanti

Uno <script src> o un href di foglio di stile che punta a un file che non esiste né in src/ né in public/ fa fallire la build. Preferisci un avviso?

export default {
  missingAssets: 'warn',
}