@inwink-mcp/backoffice-extension-helpers
v1.0.8
Published
CLI pour bootstrapper, packager et vérifier les extensions backoffice inwink.
Readme
@inwink-mcp/backoffice-extension-helpers
CLI pour bootstrapper, packager et vérifier les extensions backoffice inwink.
Une extension inwink est une SPA React/TypeScript 100 % client-side, qui s'authentifie en OIDC (Authorization Code + PKCE) et appelle les API inwink en Bearer token. Cette CLI génère le squelette conforme (auth, config Vite, manifest, packaging) pour éviter de le réécrire à la main, puis automatise le build + zip + contrôle de conformité.
S'utilise via npx, sans installation :
npx @inwink-mcp/backoffice-extension-helpers@latest <commande> [options]Commandes
bootstrap
Génère le squelette d'une extension dans le dossier courant (ou --dir).
npx @inwink-mcp/backoffice-extension-helpers@latest bootstrap \
--name mon-extension \
--display-name "Mon Extension" \
--description "Ce que fait l'extension." \
--author [email protected] \
--event-api-url https://.../event \
--community-api-url https://.../community \
--customer-api-url https://.../customer| Option | Description |
|--------|-------------|
| --name <slug> | (requis) Slug unique (minuscules, chiffres, tirets) |
| --display-name <name> | (requis) Nom affiché dans l'interface inwink |
| --description <text> | (requis) Description courte |
| --author <email> | (requis) Email de l'auteur |
| --event-api-url <url> | (requis) URL de base de l'API Event |
| --community-api-url <url> | (requis) URL de base de l'API Community |
| --customer-api-url <url> | (requis) URL de base de l'API Customer |
| --template <id> | Template à utiliser (défaut : vite-extension) |
| --dir <path> | Dossier cible (défaut : dossier courant) |
| --force | Écrire même si le dossier cible n'est pas vide |
| --install | Lancer npm install après la génération |
Fichiers générés : extension.manifest.json, package.json, vite.config.ts, tsconfig*.json, index.html, src/ (auth OIDC, api/endpoints.ts, hooks useInwink*Api, main.tsx, App.tsx), scripts/zip-build.mjs, ainsi que AGENTS.md et CLAUDE.md pour guider les agents IA. Les URLs d'API sont injectées dans src/api/endpoints.ts.
package
Build + zip {name}-{version}.zip + vérification de conformité, en une commande.
npx @inwink-mcp/backoffice-extension-helpers@latest package| Option | Description |
|--------|-------------|
| --dir <path> | Dossier du projet (défaut : dossier courant) |
Lance npm run build dans le projet, zippe le contenu de dist/, puis vérifie la conformité. Sort en code ≠ 0 si la conformité échoue.
verify
Vérifie la conformité sans rebuild (utile en CI ou après un build manuel).
npx @inwink-mcp/backoffice-extension-helpers@latest verify| Option | Description |
|--------|-------------|
| --dir <path> | Dossier du projet (défaut : dossier courant) |
| --zip <file> | Chemin d'un zip à inspecter |
Contrôles effectués :
extension.manifest.jsonprésent,name(slug) etversion(semver) valides ;dist/contientindex.html+extension.manifest.jsonà la racine +assets/;- le zip contient
index.htmletextension.manifest.jsonà la racine, sansnode_modules/,src/nidist/; - avertissements :
base: './'absent devite.config.ts, usage deBrowserRouter.
Templates
Les templates sont des sous-dossiers de templates/. Le seul template actuel est vite-extension. En ajouter d'autres : créer un nouveau sous-dossier (les fichiers .tpl voient leurs placeholders __NAME__, __DISPLAY_NAME__, __DESCRIPTION__, __AUTHOR__ substitués et leur suffixe .tpl retiré ; les autres fichiers sont copiés tels quels).
Développement
npm install
npm run build # compile src/ → dist/cli.js (tsup, ESM, shebang)
npm run dev # build en watchTest local rapide :
node dist/cli.js bootstrap --name demo --display-name "Demo" --description "..." --author [email protected] --dir /tmp/demo