Référence

Référence de la CLI

L’exécutable verso précompile les templates, les rend avec des données d’exemple et les vérifie en CI. Il ne lit aucun fichier de configuration tant que vous ne lui en indiquez pas.

Les commandes en bref

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]

Compile chaque template sous <input> et écrit un module par fichier, en conservant l’arborescence.

$ 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
OptionDéfautDescription
--out <dir>obligatoireRépertoire de sortie
--format <esm|cjs>esmFormat de module des fichiers émis
--ext <list>.vsExtensions à prendre en compte, séparées par des virgules
--strictdésactivéCompiler avec la recherche stricte des propriétés
--no-rawdésactivéFaire de {{{ }}} une erreur de compilation
--minifydésactivéRéduire les espaces du HTML statique
--sourcemapdésactivéÉmettre un .js.map qui renvoie au template
--watchdésactivéReconstruire à chaque changement, y compris des dépendances de partials
Mode surveillance

Les dépendances viennent de template.deps : modifier un partial reconstruit chaque template qui l’inclut — pas seulement le fichier touché.

verso render

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

Génère le rendu d’un template et écrit le résultat sur stdout, ou dans un fichier avec --out. Les données viennent d’un fichier JSON, ou de stdin si vous passez -.

$ 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 -

C’est le moyen le plus rapide de vérifier un template avec de vraies données, et cela rend les templates testables depuis un script shell sans lanceur de tests.

verso check

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

Analyse sans rien émettre. Sort avec un code non nul au premier échec, ce qui en fait une barrière de CI peu coûteuse :

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

Avec --format json, chaque diagnostic est un objet par ligne — fichier, ligne, colonne, règle et message —, que la plupart des outils d’annotation consomment directement.

verso explain

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

Affiche le JavaScript généré par Verso. Utile quand un template se comporte de façon inattendue et que vous préférez lire la sortie plutôt que deviner.

$ verso explain views/hello.vs

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

--tokens affiche le flux de jetons et --tree l’arbre des nœuds. Les deux sont assez stables pour être comparés d’une version à l’autre, et c’est exactement ce que fait notre suite de tests.

Fichier de configuration

Lu uniquement si vous le demandez avec --config. Il n’y a pas de recherche automatique de verso.config.js, car une configuration implicite rend les échecs de build difficiles à reproduire.

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

Codes de sortie

CodeSignification
0Succès
1Un ou plusieurs templates n’ont pas pu être compilés
2Mauvaise utilisation — option inconnue, argument manquant
3Le chemin d’entrée n’existe pas ou n’est pas lisible
4Échec du rendu à l’exécution (render uniquement)
Le mode surveillance ne s’arrête jamais

--watch continue après un échec et signale le build réussi suivant. Ne l’utilisez pas en CI — utilisez check.