Aller au contenu

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.

Fenêtre de terminal
git clone https://github.com/amine-amaach/miravo.git
cd miravo
bun install
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 release

Les packages utilisent "workspace:*" pour les dépendances inter-packages.

Exécuter le CLI en mode dev :

Fenêtre de terminal
bun run dev

Exécuter tous les tests :

Fenêtre de terminal
bun run test

Exécuter les tests d’un package spécifique :

Fenêtre de terminal
bun run test --cwd packages/core

Vérification de types (requis — Bun ne vérifie pas les types) :

Fenêtre de terminal
bun run typecheck

Lint :

Fenêtre de terminal
bun run lint

Lint et correction automatique :

Fenêtre de terminal
bun run lint:fix

Formatage :

Fenêtre de terminal
bun run format

Bun transpile TypeScript mais ne vérifie pas les types. Exécutez toujours :

Fenêtre de terminal
bun run typecheck

Cela 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.

  • Fichiers de test : *.test.ts colocalisé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 :

Fenêtre de terminal
bun run test packages/core/src/scheduler.test.ts

Miravo utilise Biome pour le lint et le formatage (pas ESLint/Prettier) :

Vérifier :

Fenêtre de terminal
bun run lint

Correction automatique :

Fenêtre de terminal
bun run lint:fix

Formater tous les fichiers :

Fenêtre de terminal
bun run format
  • 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 que writeFile)
  • Pas de any — utiliser unknown et réduire avec Zod ou des gardes de type
  • Préférer interface à type pour les formes d’objets
  • Les schémas Zod sont la source de vérité unique — dériver les types avec z.infer<>

Une tâche est complète quand :

Fenêtre de terminal
bun run typecheck && bun run test && bun run lint

Les trois doivent passer sans échec.

  • feat/ — Nouvelles fonctionnalités
  • fix/ — Corrections de bugs
  • refactor/ — Restructuration de code
  • docs/ — Modifications de documentation

Utilisez les commits conventionnels :

feat: add transport-delay generator
fix: correct lifecycle stage transition timing
refactor: extract generator input resolution
docs: update MQTT adapter reference