ruch
Version:
Revolutionary React TypeScript CLI with hexagonal architecture & AI-powered development assistance. Create maintainable, scalable applications with domain-driven design and integrated AI tooling.
191 lines (133 loc) • 5.02 kB
Markdown
# Commandes MSW pour Ruch CLI
## Vue d'ensemble
Les nouvelles commandes MSW (Mock Service Worker) ont été ajoutées au CLI Ruch pour faciliter l'intégration et la gestion des mocks dans les projets suivant l'architecture hexagonale.
## Commandes disponibles
### `ruch msw init`
Initialise la configuration MSW dans le projet.
**Ce qui est créé :**
- `src/mocks/setup.ts` - Configuration principale MSW
- `src/mocks/browser.ts` - Configuration pour l'environnement navigateur/développement
- `src/mocks/server.ts` - Configuration pour l'environnement Node.js/tests
- `src/mocks/handlers/index.ts` - Index des handlers (vide initialement)
- `src/setupTests.ts` - Configuration globale des tests avec MSW
**Exemple d'utilisation :**
```bash
ruch msw init
```
### `ruch msw handlers`
Génère les handlers MSW pour tous les domaines existants.
**Ce qui est créé :**
- Un fichier handler par domaine dans `src/mocks/handlers/`
- Mise à jour de l'index des handlers
- Création des dossiers `mocks/` dans chaque domaine
- Endpoints CRUD complets pour chaque domaine
**Exemple d'utilisation :**
```bash
ruch msw handlers
```
### `ruch msw mocks`
Génère les données mock pour tous les domaines.
**Ce qui est créé :**
- `src/domains/{domain}/mocks/mockData.ts` pour chaque domaine
- Classes de gestion des données mock avec méthodes CRUD
- Données d'exemple pour chaque domaine
**Exemple d'utilisation :**
```bash
ruch msw mocks
```
### `ruch msw update [domain]`
Met à jour la configuration MSW avec les domaines manquants, ou régénère les fichiers MSW pour un domaine spécifique.
**Utilisation générale (sans paramètre) :**
- Détecte les nouveaux domaines créés
- Crée des sauvegardes des fichiers existants avec timestamp
- Demande confirmation avant modification
- Génère les handlers manquants
- Met à jour l'index des handlers
**Utilisation pour un domaine spécifique :**
- Régénère le handler MSW du domaine
- Régénère les données mock du domaine
- Crée des sauvegardes avec timestamp
- Demande confirmation avant écrasement
- Utile après modification des entities, ports, ou adapters
**Exemples d'utilisation :**
```bash
# Mise à jour générale pour nouveaux domaines
ruch msw update
# Régénération pour un domaine spécifique
ruch msw update user
ruch msw update product
```
## Workflow recommandé
1. **Initialisation du projet :**
```bash
ruch msw init
bun add -D msw
bunx msw init public/ --save
```
2. **Génération des handlers et mocks :**
```bash
ruch msw handlers
ruch msw mocks
```
3. **Après création de nouveaux domaines :**
```bash
ruch create new-domain
ruch msw update
ruch msw mocks
```
4. **Après modification d'entities/ports/adapters d'un domaine :**
```bash
# Régénérer les mocks pour le domaine modifié
ruch msw update user
```
## Structure générée
```
src/
├── mocks/
│ ├── setup.ts # Configuration principale
│ ├── browser.ts # Setup navigateur
│ ├── server.ts # Setup Node.js/tests
│ └── handlers/
│ ├── index.ts # Index des handlers
│ ├── user.ts # Handlers du domaine user
│ ├── product.ts # Handlers du domaine product
│ └── ...
├── domains/
│ ├── user/
│ │ ├── mocks/
│ │ │ └── mockData.ts # Données mock du domaine
│ │ └── ...
│ └── ...
└── setupTests.ts # Configuration globale des tests
```
## Fonctionnalités avancées
### Gestion des sauvegardes
La commande `update` crée automatiquement des sauvegardes avec timestamp :
**Pour mise à jour générale :**
- `setup.ts.backup.{timestamp}`
- `browser.ts.backup.{timestamp}`
- `server.ts.backup.{timestamp}`
**Pour domaine spécifique :**
- `{domain}.ts.backup.{timestamp}` (handler)
- `mockData.ts.backup.{timestamp}` (données mock)
### Détection intelligente
- Évite d'écraser les fichiers existants
- Détecte automatiquement les nouveaux domaines
- Mise à jour incrémentale des configurations
### Types TypeScript
Tous les templates générés utilisent TypeScript avec :
- Interfaces typées pour les entités
- JSDoc pour la documentation
- Types stricts pour les méthodes CRUD
## Intégration avec MSW v2.x (2025)
Les templates utilisent la dernière version de MSW avec :
- `http` et `HttpResponse` pour les handlers
- `setupWorker` et `setupServer`
- Configuration moderne pour navigateur et Node.js
- Gestion d'erreurs améliorée
## Notes importantes
- Les commandes respectent l'architecture hexagonale de Ruch
- Les paths utilisent `src/domains/` (pluriel) comme configuré dans le projet
- Les handlers sont automatiquement ajoutés à l'index
- Les données mock sont générées avec des exemples réalistes
- Compatible avec les patterns React Query utilisés dans les hooks de domaine