#Installation
Il n’y a rien à installer. Le CLI est un seul fichier, scripts/theme.mjs,
sans aucune dépendance : il n’importe que des modules node:. Pas de
npm install, pas de paquet global, pas de version à tenir à jour séparément du
dépôt.
node scripts/theme.mjs aidetheme.mjs — le CLI des thèmes Webcosa
node scripts/theme.mjs <commande> [options]Si cette commande affiche l’aide, tu es prêt. Il reste à enregistrer une clé.
#Prérequis
Node.js≥ 20.13requisC’est le seul prérequis. Node 22 LTS ou 24 est le choix recommandé : c’est ce sur quoi le CLI est développé et vérifié.
Un éditeur de texteau choixAucune extension n’est nécessaire. La coloration Liquid de n’importe quel éditeur convient — le format est celui de Shopify, donc les greffons existants fonctionnent.
Vérifie ce que tu as :
node --versionv24.12.0D’où vient ce plancher de 20.13. Le dépôt ne fixe aucune version : il n’y a
ni champ engines dans package.json, ni .nvmrc. Le plancher est donc celui
des API que le script utilise réellement, et deux le fixent :
parseArgsdenode:util, qui analyse la ligne de commande — stable depuis Node 20 ;fs.watchen moderecursive, dont vit la commandesuivre— disponible de longue date sur macOS et Windows, mais sur Linux seulement depuis 20.13.0. En dessous,suivrene voit passer aucune sauvegarde sur une machine Linux, sans lever la moindre erreur. C’est exactement le genre de panne qu’on met une heure à comprendre.
Sur Node 18, fetch existe mais reste marqué expérimental et écrit un
avertissement à chaque appel. Le CLI fonctionne, la sortie devient illisible.
#Où vit le script
lyvora-cms/
├── scripts/
│ └── theme.mjs ← le CLI
├── themes/ ← les thèmes D'ORIGINE, pas un dossier de travail
│ ├── origo/
│ ├── forge/
│ ├── vela/
│ └── piazza/
└── src/Toutes les commandes s’écrivent depuis la racine du dépôt :
node scripts/theme.mjs listerLe dossier themes/ à la racine du dépôt n’est pas un dossier de travail. Il
contient les thèmes d’origine, compilés dans src/lib/liquid/catalogue.ts par
scripts/compiler-themes.mjs, et proposés à l’installation à tous les sites. Un
thème récupéré là finirait au catalogue sans que personne l’ait décidé.
Le CLI le détecte et t’avertit — mais il n’empêche rien :
! /Users/marc/lyvora-cms/themes/atelier est sous le `themes/` du dépôt — celui
des thèmes d'ORIGINE, compilé dans le catalogue. Préfère `--dossier=` ailleurs.Travaille ailleurs, avec --dossier=. Faire entrer un thème au catalogue est un
geste délibéré, décrit dans Ajouter un thème au catalogue.
#L’utiliser hors du dépôt
Le script est autonome : il ne lit aucun fichier du dépôt, ne résout aucun alias
@/, et n’a besoin de rien d’autre que Node. On peut donc le copier à côté de
ses thèmes, ou dans un dépôt de thèmes séparé.
mkdir -p ~/themes/outils
cp lyvora-cms/scripts/theme.mjs ~/themes/outils/
node ~/themes/outils/theme.mjs aide# ~/.zshrc
alias wtheme='node ~/themes/outils/theme.mjs'
wtheme pousserUne copie ne se met pas à jour toute seule. Le CLI recopie une partie du format
des thèmes — les six dossiers, les extensions admises, TAILLE_MAX,
FICHIERS_MAX — parce qu’il tourne hors de Next et ne peut pas lire un module
TypeScript. La divergence est sans danger : le serveur revalide tout ce qu’il
reçoit, donc au pire une copie vieillie enverra un fichier que le serveur
refusera avec son propre message. Mais elle ne t’évitera plus l’aller-retour
réseau, ce qui est justement sa raison d’être.
#Un dossier de thème, de zéro
Le CLI n’a pas de commande d’initialisation, et c’est volontaire : les trois fichiers indispensables sont si courts qu’une commande pour les écrire coûterait plus à maintenir qu’à taper. Il y a deux vraies façons de commencer.
La plus rapide. Installe un thème d’origine depuis le CMS (Apparence → Thèmes), puis récupère-le :
node scripts/theme.mjs recuperer --theme=Origo --dossier=~/themes/mon-themeTu obtiens un thème complet et fonctionnel, avec son .webcosa.json déjà posé.
Crée les six dossiers, écris au minimum layout/theme.liquid,
config/settings_schema.json et templates/index.json, puis :
node scripts/theme.mjs pousser --nouveau --nom="Mon thème" --dossier=~/themes/mon-themeLe pas à pas complet est dans Créer son premier thème.
#Vérifier que tout répond
L’aide s’affiche
node scripts/theme.mjs aideSi tu obtiens
command not found: node, c’est Node qui manque, pas le CLI.La clé est enregistrée
node scripts/theme.mjs connexionLa commande vérifie la clé avant de l’écrire : si elle affiche le nom de ton site, l’authentification fonctionne de bout en bout.
Le site répond
node scripts/theme.mjs listerid nom version rôle modifié 11111111 Origo 1.0.0 publié il y a 3 min 22222222 Chantier 2.1.0 brouillon il y a 4 jUne liste vide n’est pas une panne : c’est un site sans thème. Installe-en un depuis le CMS, ou pousse un dossier avec
pousser --nouveau.
--verbeux détaille chaque appel HTTP — méthode, adresse, site visé, présence
de la clé. C’est la première chose à ajouter quand une commande ne fait pas ce
qu’on croyait :
node scripts/theme.mjs lister --verbeuxSi une commande échoue, la page des erreurs reprend chaque message avec sa cause et le geste à faire.

