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 depswithpanache 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_SHAwithpanache 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 --writewithpanache 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.appSortie 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.
| Variable | Usage |
|---|---|
PANACHE_SITE_TOKEN | Bearer token for `ingest deps` and `deploy`. |
PANACHE_CSP_TOKEN | CSP token (`pncsp_<32hex>`) for `csp inject`. |
PANACHE_API_URL | Override the ingest API URL. Default: `https://withpanache.dev`. |
PANACHE_CSP_ENDPOINT | Override the CSP report endpoint. Default: `https://csp.withpanache.dev`. |
PANACHE_CSP_LEARNING_MODE | `1`/`true`/`yes` enables Report-Only mode. |
PANACHE_DEFAULT_BRANCH | Default branch name. Default: `main`. |
Codes de sortie
Le CLI utilise des codes de sortie distincts pour que les scripts CI puissent reagir correctement :
| Exit | Signification |
|---|---|
0 | Success. |
1 | User error (missing token, malformed flag, ambiguous file format). |
2 | Push failure (non-2xx HTTP response from the Panache API). |
3 | File 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