---
title: Guide de Développement Local & Contribution
description: Guide pas à pas pour compiler, tester et étendre le moteur VertiWiki depuis les sources.
tags: [vertiwiki, developpement, contribution, tests, vite, typescript, francais]
---

# Guide de Développement Local & Contribution

> For the complete documentation index and agent navigation, see [llms.txt](/llms.txt).

Ce guide détaille l'installation de votre environnement local, la compilation du paquet autonome, l'exécution des tests et la création d'extensions pour VertiWiki.

---

## 🛠️ Prérequis

- **Node.js** : Version `22.0.0` ou supérieure.
- **Gestionnaire de Paquets** : `npm`, `pnpm` ou `bun`.
- **Git** : Pour le versionnement.

---

## 🚀 Mise en Place de l'Espace de Développement

### 1. Cloner le Dépôt
```bash
git clone https://github.com/Octadira/vertiwiki.git
cd vertiwiki
```

### 2. Installer les Dépendances
```bash
npm install
```

### 3. Lancer le Serveur de Développement
```bash
npm run dev
```
Vite démarre un serveur à l'adresse `http://localhost:5173` avec rechargement à chaud (HMR).

---

## 🧪 Suite de Tests Automatisés (Vitest)

VertiWiki garantit une couverture complète de ses modules :

```bash
# Exécution unique des tests
npm test

# Vérification stricte des types TypeScript
npm run typecheck

# Mode interactif watch
npx vitest

# Rapport de couverture
npx vitest run --coverage
```

### Fichiers de Tests Majeurs :
- `tests/security.test.ts` : Vérification du sandboxing iframe (`allow-presentation`), neutralisation d'URI (`javascript:`, `vbscript:`) et typage DOM.
- `tests/router-i18n.test.ts` : Validation du routage hash et des sous-dossiers.
- `tests/pipeline.test.ts` : Contrôle de l'ordre d'exécution des hooks.
- `tests/parser.test.ts` : Analyse frontmatter, auto-fermeture de blocs et DOMPurify.
- `tests/plugins-markup.test.ts` : Wikilinks, badges, callouts et mathématiques.

---

## 📦 Compilation de la Distribution de Production

Pour produire le fichier HTML unique complet :

```bash
npm run build
```

Ce pipeline exécute :
1. Validation des types TypeScript (`tsc --noEmit`).
2. Empaquetage des ressources via `vite-plugin-singlefile`.
3. Le hook `closeBundle()` de Vite écrit nativement les deux bundles de distribution, supprimant les commandes shell système (`cp`) pour une compatibilité 100% multi-plateforme sous Windows, macOS et Linux :
   - `dist/index.html`
   - `dist/vertiwiki.html`

---

## 🎨 Concevoir un Thème Personnalisé

1. Créez `themes/mon-theme.json` :
```json
{
  "id": "mon-theme",
  "name": "Mon Thème",
  "previewColor": "#0ea5e9",
  "light": {
    "background": "#ffffff",
    "foreground": "#0f172a",
    "primary": "#0ea5e9",
    "border": "#e2e8f0"
  },
  "dark": {
    "background": "#0b1120",
    "foreground": "#f8fafc",
    "primary": "#38bdf8",
    "border": "#1e293b"
  }
}
```

2. Déclarez-le dans `config.json` :
```json
{
  "customThemes": ["themes/mon-theme.json"],
  "themePreset": "mon-theme"
}
```
