Un outil en ligne de commande qui génère de la documentation JSON à partir du code source Dart, similaire à dartdoc mais avec une sortie JSON au lieu de HTML.
- 📦 Analyse des répertoires entiers ou des fichiers d'export Flutter
- 🔍 Extraction complète de la documentation du code
- 🎯 Support de toutes les constructions du langage Dart:
- Classes (sealed, abstract, base, final, mixin classes)
- Enums avec fonctionnalités avancées
- Mixins avec contraintes
- Extensions
- Fonctions et variables de niveau supérieur
- 📝 Documentation nettoyée (suppression des
///et//) - 🔤 Préservation complète des informations de type avec nullabilité
- 🚫 Filtrage automatique des éléments privés
- 📄 Génération de JSON propre et structuré
- 🗂️ Organisation par structure de bibliothèque (optionnel)
- ⚡ Nom de sortie automatique basé sur le fichier d'entrée
- Assurez-vous d'avoir Dart SDK 3.0.0 ou supérieur installé
- Clonez ce dépôt
- Installez les dépendances:
dart pub getdart run bin/dart_doc_json.dart -i <input> [-o <output>] [--export-dir <dir>]-i, --input(requis): Fichier d'export.dartou répertoire contenant des fichiers Dart-o, --output(optionnel): Fichier JSON de sortie (par défaut: nom du fichier d'entrée +.json)--export-dir(optionnel): Répertoire de base pour organiser les fichiers de sortie par structure de bibliothèque-h, --help: Afficher l'aide
1. Analyser un fichier d'export Flutter:
dart run bin/dart_doc_json.dart -i /path/to/flutter/lib/cupertino.dart
# Sortie: cupertino.json (nom automatique)2. Analyser avec nom de sortie personnalisé:
dart run bin/dart_doc_json.dart -i /path/to/cupertino.dart -o docs/cupertino.json3. Organiser par structure de répertoires:
dart run bin/dart_doc_json.dart -i /path/to/cupertino.dart --export-dir output/flutter
# Sortie: output/flutter/src/cupertino/*.json (un fichier par source)4. Analyser un répertoire:
dart run bin/dart_doc_json.dart -i lib -o documentation.json5. Analyser Flutter Cupertino complet:
dart run bin/dart_doc_json.dart \
-i /home/ali/snap/flutter/common/flutter/packages/flutter/lib/cupertino.dart \
--export-dir output/flutterL'outil peut maintenant analyser les fichiers d'export Flutter (comme cupertino.dart, material.dart) et extraire automatiquement tous les fichiers référencés.
Exemple: Le fichier cupertino.dart exporte 50 fichiers - tous sont analysés automatiquement!
L'option --output est maintenant optionnelle. Si non spécifiée:
- Fichier d'export:
cupertino.dart→cupertino.json - Répertoire:
documentation.json(par défaut)
Avec --export-dir, les fichiers sont organisés selon la structure source:
output/flutter/
└── src/
└── cupertino/
├── activity_indicator.json
├── app.json
├── button.json
└── ...
La documentation est maintenant propre et lisible:
- ✅ Suppression des
///et// - ✅ Préservation des
\npour la structure
Avant:
"documentation": "/// An iOS-style activity indicator"Après:
"documentation": "An iOS-style activity indicator"L'outil génère un tableau JSON de bibliothèques. Chaque bibliothèque contient:
[
{
"name": "library_name",
"documentation": "Library documentation",
"classes": [...],
"enums": [...],
"mixins": [...],
"extensions": [...],
"functions": [...],
"variables": [...]
}
]Chaque classe inclut:
- Nom et documentation
- Modificateurs (abstract, sealed, final, base, mixin class)
- Paramètres de type
- Superclasse et interfaces
- Mixins
- Constructeurs avec paramètres
- Champs avec types et modificateurs
- Méthodes avec types de retour et paramètres
{
"name": "CupertinoActivityIndicator",
"documentation": "An iOS-style activity indicator that spins clockwise.\n\nSee also:\n\n* <https://developer.apple.com/design/...>",
"isAbstract": false,
"isSealed": false,
"typeParameters": [],
"superclass": "StatefulWidget",
"constructors": [
{
"name": "CupertinoActivityIndicator",
"documentation": "Creates an iOS-style activity indicator that spins clockwise.",
"isConst": true,
"parameters": [
{
"name": "color",
"type": "Color?",
"isRequired": false,
"isNamed": true
}
]
}
],
"fields": [...],
"methods": [...]
}- Parsing d'Export: Utilise regex pour extraire les chemins des
export 'path/to/file.dart'; - Analyse: Utilise le package
analyzerde Dart pour parser les fichiers source - Extraction: Traverse l'AST pour extraire tous les symboles publics
- Nettoyage: Supprime les
///et//de la documentation - Sérialisation: Convertit en JSON avec des modèles de données personnalisés
- Organisation: Crée la structure de répertoires si
--export-direst spécifié
analyzer: ^6.0.0- Analyse de code Dartpath: ^1.8.0- Manipulation de cheminsargs: ^2.4.0- Parsing d'arguments en ligne de commande
# Cupertino
dart run bin/dart_doc_json.dart \
-i /path/to/flutter/lib/cupertino.dart \
--export-dir output/flutter
# Material
dart run bin/dart_doc_json.dart \
-i /path/to/flutter/lib/material.dart \
--export-dir output/flutter
# Widgets
dart run bin/dart_doc_json.dart \
-i /path/to/flutter/lib/widgets.dart \
--export-dir output/flutter# Fichier unique
dart run bin/dart_doc_json.dart -i lib/my_library.dart
# Répertoire complet
dart run bin/dart_doc_json.dart -i lib -o my_docs.jsonCe projet est fourni tel quel pour la génération de documentation.
N'hésitez pas à soumettre des issues ou des pull requests pour des améliorations!