Contribuer
Configurez Miravo pour le développement local — monorepo Bun, conventions de test, lint Biome, vérification de types et comment soumettre des modifications.
Miravo est open source et accueille les contributions.
Prérequis
Section intitulée « Prérequis »Installation
Section intitulée « Installation »git clone https://github.com/amine-amaach/miravo.gitcd miravobun installStructure du monorepo
Section intitulée « Structure du monorepo »miravo/ packages/ cli/ # Point d'entrée CLI (Commander.js) core/ # Moteur, scheduler, générateurs, twin runtime shared/ # Schémas Zod, types, constantes content/ # Modèles et templates intégrés console/ # Tableau de bord web (React + shadcn/ui + Vite) protocols/ mqtt/ # Adaptateur MQTT (aedes intégré + mqtt.js externe) opcua/ # Adaptateur OPC UA (node-opcua) web/ # Site de documentation (Astro + Starlight) tests/fixtures/ # Templates de stress scripts/ # Scripts de build et releaseLes packages utilisent "workspace:*" pour les dépendances inter-packages.
Commandes de développement
Section intitulée « Commandes de développement »Exécuter le CLI en mode dev :
bun run devExécuter tous les tests :
bun run testExécuter les tests d’un package spécifique :
bun run test --cwd packages/coreVérification de types (requis — Bun ne vérifie pas les types) :
bun run typecheckLint :
bun run lintLint et correction automatique :
bun run lint:fixFormatage :
bun run formatVérification de types
Section intitulée « Vérification de types »Bun transpile TypeScript mais ne vérifie pas les types. Exécutez toujours :
bun run typecheckCela exécute tsc -b (mode build) qui suit les références de projet. N’utilisez pas tsc --noEmit — cela ne vérifie rien avec la config racine du monorepo.
Conventions de test
Section intitulée « Conventions de test »- Fichiers de test :
*.test.tscolocalisés à côté des fichiers source - Import depuis
bun:test:import { describe, test, expect } from "bun:test" - Les tests doivent asserter des valeurs spécifiques, pas seulement que le code s’exécute sans erreur
- Ne jamais modifier un test qui échoue pour le faire passer — corriger l’implémentation
- Ne jamais mocker ce qui est testé
Exécuter un fichier de test unique :
bun run test packages/core/src/scheduler.test.tsMiravo utilise Biome pour le lint et le formatage (pas ESLint/Prettier) :
Vérifier :
bun run lintCorrection automatique :
bun run lint:fixFormater tous les fichiers :
bun run formatStyle de code
Section intitulée « Style de code »- ES modules uniquement (
import/export) - Utiliser
import type { X }pour les imports de types uniquement - Préférer les APIs Bun à Node.js (
Bun.write()plutôt quewriteFile) - Pas de
any— utiliserunknownet réduire avec Zod ou des gardes de type - Préférer
interfaceàtypepour les formes d’objets - Les schémas Zod sont la source de vérité unique — dériver les types avec
z.infer<>
Définition de “terminé”
Section intitulée « Définition de “terminé” »Une tâche est complète quand :
bun run typecheck && bun run test && bun run lintLes trois doivent passer sans échec.
Nommage des branches
Section intitulée « Nommage des branches »feat/— Nouvelles fonctionnalitésfix/— Corrections de bugsrefactor/— Restructuration de codedocs/— Modifications de documentation
Messages de commit
Section intitulée « Messages de commit »Utilisez les commits conventionnels :
feat: add transport-delay generatorfix: correct lifecycle stage transition timingrefactor: extract generator input resolutiondocs: update MQTT adapter reference