Docs

CLI

CLI framework-agnostique pour les projets non Next.js. À lancer dans votre CI pour pousser les deps et signaler les déploiements.

Quand l'utiliser

Utilisez le CLI quand vous ne pouvez pas utiliser le plugin Next.js. Cas typiques : - Export statique déployé sur Firebase Hosting via GitLab CI. - Vite, Astro, Remix ou toute stack non-Next que vous buildez en CI. - Un monorepo où une partie de l'app n'enrobe pas un next.config. Le plugin Next.js (@withpanache/nextjs) reste la voie recommandée si vous avez une app Next.js : il branche le reporting CSP au runtime et pousse le manifest de deps automatiquement pendant next build.

Installation

Ajoutez le CLI en devDependency, ou lancez-le à la volée via npx :

npm install --save-dev @withpanache/cli
# ou
pnpm add -D @withpanache/cli

# A la volee, sans installation :
npx @withpanache/cli ingest deps

withpanache ingest deps

Détecte le lockfile (npm, pnpm, yarn classic, yarn berry), parse les dépendances de production et pousse le manifest vers Panache. Équivalent de ce que fait le plugin Next.js au moment du build. Le contexte git (SHA, branche, URL de preview) est détecté automatiquement depuis les variables d'environnement CI : GITHUB_*, CI_COMMIT_*, VERCEL_*, CF_PAGES_*, DEPLOY_URL. Surchargez n'importe quel champ avec le --flag correspondant.

# Dans .gitlab-ci.yml (ou toute CI), apres install :
export PANACHE_SITE_TOKEN=pnch_xxxxxxxx
npx @withpanache/cli ingest deps

# Surcharges explicites :
withpanache ingest deps --branch main --git-sha $CI_COMMIT_SHA

withpanache csp inject <fichier>

Injecte les directives de reporting CSP Panache (report-uri + report-to) dans un fichier de config. Formats supportés : firebase.json (auto-détecté par nom de fichier) et fichiers CSP bruts. Dry-run par défaut : le diff est imprimé sur stderr. Passez --write pour appliquer. Utilisez --learning-mode pour basculer de l'enforcement vers Content-Security-Policy-Report-Only. Relancer avec --write met à jour une entrée existante en place, sans duplication. Le token CSP (pncsp_<32hex>) est généré dans le dashboard sous Settings > CSP. Il n'est pas secret : il scope les rapports à votre site.

export PANACHE_CSP_TOKEN=pncsp_xxxxxxxx
withpanache csp inject firebase.json --write

# Mode apprentissage (header Report-Only, les violations ne sont pas bloquees) :
withpanache csp inject firebase.json --write --learning-mode

# Fichier CSP brut (pas de cle d'en-tete, juste la valeur de directive) :
withpanache csp inject csp.txt --format raw --write

withpanache deploy

Signale un déploiement pour que Panache relance les checks HTTP sur l'URL live. À utiliser dans les flows CI où il n'y a pas d'URL de preview par branche (ex : Firebase Hosting export statique). Nécessite un workflow configuré pour le site avec triggerProvider=api. Sinon l'appel est un no-op et le CLI affiche un avertissement.

export PANACHE_SITE_TOKEN=pnch_xxxxxxxx
withpanache deploy --url https://my-site.web.app

Sortie JSON

Passez --json pour émettre un objet JSON sur une ligne sur stdout (les logs vont sur stderr). Utile pour le scripting.

$ withpanache ingest deps --json
{"ok":true,"command":"ingest deps","status":200,"packages":487,"branch":"main"}

# En cas d'echec :
$ withpanache deploy --json
{"ok":false,"error":"missing site token (set PANACHE_SITE_TOKEN or pass --token)"}

Variables d'environnement

Tous les flags peuvent être fournis via variables d'environnement pour garder les tokens hors de `ps aux` et des logs CI. Recommandé plutôt que --token.

VariableUsage
PANACHE_SITE_TOKENBearer token for `ingest deps` and `deploy`.
PANACHE_CSP_TOKENCSP token (`pncsp_<32hex>`) for `csp inject`.
PANACHE_API_URLOverride the ingest API URL. Default: `https://withpanache.dev`.
PANACHE_CSP_ENDPOINTOverride the CSP report endpoint. Default: `https://csp.withpanache.dev`.
PANACHE_CSP_LEARNING_MODE`1`/`true`/`yes` enables Report-Only mode.
PANACHE_DEFAULT_BRANCHDefault branch name. Default: `main`.

Codes de sortie

Le CLI utilise des codes de sortie distincts pour que les scripts CI puissent réagir correctement :

ExitSignification
0Success.
1User error (missing token, malformed flag, ambiguous file format).
2Push failure (non-2xx HTTP response from the Panache API).
3File error (unreadable input, write failure, empty CSP).

Besoin d'aide ?

Pour toute question sur le CLI ou si vous avez besoin d'assistance, contactez-nous à hello@withpanache.dev