Referenz

CLI-Referenz

Das Programm verso kompiliert Templates vorab, rendert sie mit Beispieldaten und prüft sie in der CI. Es liest keine Konfigurationsdatei, solange Sie es nicht auf eine verweisen.

Befehle im Überblick

Terminal
$ verso --help

  verso build   <input> --out <dir>   compile templates to JavaScript
  verso render  <file>  --data <json> render once and print to stdout
  verso check   <input>               parse only, report errors
  verso explain <file>                print the emitted source

  --config <path>   load options from a JSON or JS file
  --quiet           errors only
  --no-color        disable ANSI colours (also honours NO_COLOR)
  --version         print version and exit

verso build

verso build <input> --out <dir> [flags]

Kompiliert jedes Template unter <input> und schreibt pro Datei ein Modul, wobei die Verzeichnisstruktur erhalten bleibt.

$ verso build views/ --out dist/views/ --format esm
  views/page.vs      → dist/views/page.js     3.1 kB
  views/report.vs    → dist/views/report.js   5.8 kB
  views/partials/…   → 4 files                2.2 kB
  6 templates in 118 ms
FlagStandardBeschreibung
--out <dir>erforderlichAusgabeverzeichnis
--format <esm|cjs>esmModulformat der erzeugten Dateien
--ext <list>.vsKommagetrennte Endungen, die berücksichtigt werden
--strictausMit striktem Nachschlagen von Eigenschaften kompilieren
--no-rawaus{{{ }}} zum Kompilierfehler machen
--minifyausLeerraum in statischem HTML zusammenfassen
--sourcemapaus.js.map erzeugen, das auf das Template zurückzeigt
--watchausBei Änderungen neu bauen, einschließlich Abhängigkeiten von Partials
Watch-Modus

Abhängigkeiten kommen aus template.deps, eine Änderung an einem Partial baut also jedes Template neu, das es einbindet — nicht nur die Datei, die Sie angefasst haben.

verso render

verso render <file> [--data <path|->] [--out <file>]

Rendert ein Template und schreibt das Ergebnis nach stdout oder mit --out in eine Datei. Die Daten kommen aus einer JSON-Datei oder von stdin, wenn Sie - angeben.

$ verso render views/invoice.vs --data fixtures/invoice.json > out.html

$ curl -s https://api.example.com/orders/41 \
    | verso render views/order.vs --data -

So prüft man ein Template am schnellsten mit echten Daten, und Templates werden aus einem Shell-Skript testbar, ganz ohne Test-Runner.

verso check

verso check <input> [--strict] [--no-raw] [--format <human|json>]

Parst, ohne etwas auszugeben. Beendet sich beim ersten Fehler mit einem Code ungleich null, was es zu einer billigen CI-Schranke macht:

.github/workflows/ci.yml
- name: Check templates
  run: npx verso check views/ --strict --no-raw --format json

Mit --format json ist jede Meldung ein Objekt pro Zeile — Datei, Zeile, Spalte, Regel und Nachricht —, das die meisten Annotationswerkzeuge direkt verarbeiten können.

verso explain

verso explain <file> [--tokens] [--tree]

Gibt das JavaScript aus, das Verso erzeugt. Nützlich, wenn sich ein Template unerwartet verhält und Sie lieber die Ausgabe lesen als raten.

$ verso explain views/hello.vs

function template(data, opts) {
  let out = '<h1>';
  out += esc(data?.title);
  out += '</h1>';
  return out;
}

--tokens gibt den Token-Strom aus und --tree den Knotenbaum. Beide sind stabil genug, um sie zwischen Versionen zu vergleichen, und genau dafür nutzen wir sie in der Testsuite.

Konfigurationsdatei

Wird nur gelesen, wenn Sie sie mit --config anfordern. Eine automatische Suche nach verso.config.js gibt es nicht, weil implizite Konfiguration Build-Fehler schwer reproduzierbar macht.

verso.config.json
{
  "strict": true,
  "allowRaw": false,
  "ext": [".vs", ".html.vs"],
  "minify": true
}

Exit-Codes

CodeBedeutung
0Erfolg
1Ein oder mehrere Templates ließen sich nicht kompilieren
2Falsche Verwendung — unbekanntes Flag, fehlendes Argument
3Eingabepfad existiert nicht oder ist nicht lesbar
4Rendern zur Laufzeit fehlgeschlagen (nur render)
Der Watch-Modus beendet sich nie

--watch läuft nach einem Fehler weiter und meldet den nächsten erfolgreichen Build. Nicht in der CI verwenden — dort check nehmen.