Docs

CLI

CLI framework-agnostique pour les projets non Next.js. A lancer dans votre CI pour pousser les deps et signaler les deploiements.

Quand l'utiliser

Utilisez le CLI quand vous ne pouvez pas utiliser le plugin Next.js. Cas typiques : - Export statique deploye sur Firebase Hosting via GitLab CI. - Vite, Astro, Remix ou toute stack non-Next que vous buildez en CI. - Un monorepo ou une partie de l'app n'enrobe pas un next.config. Le plugin Next.js (@withpanache/nextjs) reste la voie recommandee 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 a la volee 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

Detecte le lockfile (npm, pnpm, yarn classic, yarn berry), parse les dependances de production et pousse le manifest vers Panache. Equivalent de ce que fait le plugin Next.js au moment du build. Le contexte git (SHA, branche, URL de preview) est detecte 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 supportes : firebase.json (auto-detecte par nom de fichier) et fichiers CSP bruts. Dry-run par defaut : le diff est imprime sur stderr. Passez --write pour appliquer. Utilisez --learning-mode pour basculer de l'enforcement vers Content-Security-Policy-Report-Only. Relancer avec --write met a jour une entree existante en place, sans duplication. Le token CSP (pncsp_<32hex>) est genere dans le dashboard sous Settings > CSP. Il n'est pas secret : il scope les rapports a 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 deploiement pour que Panache relance les checks HTTP sur l'URL live. A utiliser dans les flows CI ou il n'y a pas d'URL de preview par branche (ex : Firebase Hosting export statique). Necessite un workflow configure 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 emettre 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 etre fournis via variables d'environnement pour garder les tokens hors de `ps aux` et des logs CI. Recommande plutot 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 reagir 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 a hello@withpanache.dev