@cadriciel/starter
v2.1.0
Published
CLI pour créer des projets Cadriciel (Cerema)
Maintainers
Readme
Cadriciel Starter - Architecture Modulaire
CLI et templates pour créer des projets Cadriciel (Cerema).
Packages
| Package | Description | Version |
|---------|-------------|---------|
| @cadriciel/starter | CLI orchestrateur | 2.0.0 |
| @cadriciel/starter-node | Template Node.js/Bun fullstack | 1.0.0 |
| @cadriciel/starter-springboot | Template Spring Boot fullstack | 1.0.0 |
| @cadriciel/starter-python | Template Python fullstack | 1.0.0 |
Structure
starter/
├── package.json # @cadriciel/starter (CLI)
├── bin/cli.js # Point d'entrée CLI
├── lib/init.js # Logique d'initialisation
│
├── starter-bun/ # @cadriciel/starter-node
│ ├── package.json
│ ├── index.js
│ ├── starter.config.json
│ └── template/
│ ├── _root/ # Fichiers racine projet
│ ├── frontend/ # Frontend Angular
│ └── backend/ # Backend Node.js/Bun
│
├── starter-springboot/ # @cadriciel/starter-springboot
│ ├── package.json
│ ├── index.js
│ ├── starter.config.json
│ └── template/
│ ├── _root/
│ ├── frontend/
│ └── backend/
│
└── starter-python/ # @cadriciel/starter-python
├── package.json
├── index.js
├── starter.config.json
└── template/Installation
# Installation globale
npm install -g @cadriciel/starter
# Ou via npx (recommandé)
npx @cadriciel/starter <template> <name>Usage
Créer un projet
# Syntaxe complète
npx @cadriciel/starter create springboot MonProjet
npx @cadriciel/starter create node MonProjet
npx @cadriciel/starter create python MonProjet
# Raccourcis
npx @cadriciel/starter springboot MonProjet
npx @cadriciel/starter node MonProjet
npx @cadriciel/starter python MonProjet
# Alias de commande
cad springboot MonProjetOptions
-o, --output <path> Répertoire de sortie (défaut: ./<projectName>)
--dry-run Affiche ce qui serait fait sans créer les fichiers
--no-git Ne pas initialiser git
--no-install Ne pas installer les dépendances
--frontend-only Créer uniquement le frontend
--backend-only Créer uniquement le backendLister les templates
npx @cadriciel/starter listPrincipe du renommage
Tous les templates utilisent "cadriciel" comme nom de base.
Lors de la création d'un projet "MonProjet", le CLI remplace automatiquement:
| Source | Destination |
|--------|-------------|
| cadriciel | monprojet |
| Cadriciel | MonProjet |
| CADRICIEL | MONPROJET |
| fr.cerema.dsi.cadriciel | fr.cerema.dsi.monprojet |
Développement local
# Lier les packages pour développement
cd starter-bun && npm link && cd ..
cd starter-springboot && npm link && cd ..
cd starter-python && npm link && cd ..
# Lier le CLI
npm link @cadriciel/starter-node
npm link @cadriciel/starter-springboot
npm link @cadriciel/starter-python
npm link
# Tester
cadriciel-starter list
cadriciel-starter springboot TestProject --dry-runPublication
La CI GitLab publie automatiquement les packages sur npm lors:
- D'un tag de version (
v1.0.0,v2.0.1, etc.) - Manuellement depuis la branche
main
# Publication manuelle (si nécessaire)
cd starter-bun && npm publish --access public && cd ..
cd starter-springboot && npm publish --access public && cd ..
cd starter-python && npm publish --access public && cd ..
npm publish --access publicConfiguration des templates
Chaque template utilise un fichier starter.config.json qui définit:
options.frontend- sources du frontendoptions.backend- sources du backendoptions.core- fichiers communs (README, .gitignore, etc.)hooks- scripts post-création
Exemple:
{
"name": "starter-springboot",
"description": "Starter Cadriciel CEREMA (Spring Boot)",
"options": {
"frontend": {
"sources": [{ "src": "template/frontend", "dest": "frontend" }]
},
"backend": {
"sources": [{ "src": "template/backend", "dest": "backend" }]
},
"core": {
"sources": [
{ "src": "template/_root/README.md", "dest": "README.md" },
{ "src": "template/_root/.gitlab-ci.yml", "dest": ".gitlab-ci.yml" }
]
}
}
}Intégration Backend Cadriciel
Le TemplateService du backend peut utiliser ces packages:
const nodeTemplate = require('@cadriciel/starter-node');
const springbootTemplate = require('@cadriciel/starter-springboot');
// Accéder au répertoire de template
const srcDir = springbootTemplate.templateDir;
const config = springbootTemplate.config;