Outils et plugins
Le choix des bons outils et plugins peut grandement améliorer l'efficacité et la qualité de la rédaction Markdown. Ce guide présente différents types d'outils pour vous aider à construire un workflow Markdown complet.
Éditeurs recommandés
Éditeurs de code professionnels
Visual Studio Code
Fonctionnalités : Gratuit, multiplateforme, riche en plugins
Plugins recommandés :
- Markdown All in One : Support Markdown tout-en-un
- Markdown Preview Enhanced : Aperçu enrichi
- markdownlint : Vérification et linting de la syntaxe
- Paste Image : Collage rapide d'images
- Table Editor : Édition visuelle de tableaux
- Math to Image : Conversion de formules mathématiques en images
Exemple de configuration :
{
"markdown.preview.fontSize": 14,
"markdown.preview.lineHeight": 1.6,
"markdown.extension.toc.levels": "1..6",
"markdown.extension.print.absoluteImgPath": false,
"[markdown]": {
"editor.wordWrap": "on",
"editor.lineNumbers": "on",
"editor.quickSuggestions": false
}
}
Typora
Fonctionnalités : WYSIWYG, interface épurée, thèmes riches
Principales fonctionnalités :
- Édition en aperçu temps réel
- Support des formules mathématiques
- Dessin de graphiques intégré
- Export vers de multiples formats
- Copie automatique d'images
- Édition visuelle de tableaux
Mark Text
Fonctionnalités : Open source, aperçu temps réel, excellente performance
Fonctionnalités principales :
- Rendu en temps réel
- Mode focus
- Support des formules mathématiques
- Support des organigrammes
- Multiples formats d'export
- Thèmes personnalisés
Éditeurs en ligne
StackEdit
Fonctionnalités : Basé navigateur, synchronisation cloud, collaboration
Points forts :
- Synchronisation temps réel avec Google Drive, Dropbox
- Publication sur GitHub, plateformes de blog
- Support de l'édition hors ligne
- Formules mathématiques et graphiques
- Édition collaborative
- Historique des versions
Dillinger
Fonctionnalités : Interface simple, intégration multi-plateforme
Plateformes intégrées :
- GitHub
- Dropbox
- Google Drive
- OneDrive
- Export HTML, PDF
- Aperçu temps réel
HackMD
Fonctionnalités : Collaboration d'équipe, mode présentation
Fonctionnalités collaboratives :
- Édition temps réel multi-utilisateurs
- Système de commentaires
- Contrôle de version
- Gestion des permissions
- Mode présentation
- Mode livre
Outils de prévisualisation et de conversion
Générateurs de sites statiques
VitePress
Fonctionnalités : Écosystème Vue, excellente performance, moderne
// .vitepress/config.js
export default {
title: 'Ma documentation',
description: 'Un site VitePress',
themeConfig: {
nav: [
{ text: 'Accueil', link: '/' },
{ text: 'Guide', link: '/guide/' }
],
sidebar: {
'/guide/': [
{
text: 'Bien démarrer',
items: [
{ text: 'Introduction', link: '/guide/introduction' },
{ text: 'Installation', link: '/guide/installation' }
]
}
]
}
},
markdown: {
math: true,
mermaid: true,
lineNumbers: true
}
}
GitBook
Fonctionnalités : Belle interface, collaboration d'équipe, gestion des versions
Points forts :
- Expérience de lecture moderne
- Édition collaborative en équipe
- Export multi-format
- Fonction de recherche
- Statistiques intégrées
- Génération de documentation API
Docusaurus
Fonctionnalités : Open source Facebook, écosystème React, support multilingue
// docusaurus.config.js
module.exports = {
title: 'Mon site',
tagline: 'Le slogan de mon site',
url: 'https://your-docusaurus-test-site.com',
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.js'),
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/',
},
blog: {
showReadingTime: true,
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/blog/',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
},
],
],
themeConfig: {
navbar: {
title: 'Mon site',
logo: {
alt: 'Logo du site',
src: 'img/logo.svg',
},
},
},
};
Outils de conversion de format
Pandoc
Fonctionnalités : Convertisseur universel, outil CLI, formats riches
# Markdown vers PDF
pandoc document.md -o document.pdf
# Markdown vers Word
gpandoc document.md -o document.docx
# Markdown vers HTML (style personnalisé)
pandoc document.md -s --css=style.css -o document.html
# Conversion par lot
find . -name "*.md" -exec pandoc {} -o {}.pdf \;
# Utiliser un template
pandoc document.md --template=template.html -o output.html
# Générer une table des matières
pandoc document.md --toc --toc-depth=3 -o document.pdf
markdownlint
Fonctionnalités : Vérification de la syntaxe, standards unifiés, correction automatique
# Installation
npm install -g markdownlint-cli
# Vérifier un fichier
markdownlint README.md
# Vérifier un dossier
markdownlint docs/
# Correction automatique
markdownlint --fix *.md
# Utiliser un fichier de config
markdownlint --config .markdownlint.json docs/
Exemple de configuration :
{
"default": true,
"MD013": {
"line_length": 120,
"code_blocks": false,
"tables": false
},
"MD033": {
"allowed_elements": ["div", "span", "img", "a"]
},
"MD041": false
}
Outils d'hébergement
Outils de gestion de documentation
Notion
Fonctionnalités : Espace de travail tout-en-un, fonctions de base de données, modèles riches
Fonctionnalités de document :
- Structure hiérarchique de pages
- Édition collaborative en temps réel
- Intégration de base de données
- Système de modèles
- Support des médias
- Intégration API
Confluence
Fonctionnalités : Entreprise, gestion des permissions, intégration forte
Fonctionnalités d'entreprise :
- Contrôle de permission avancé
- Flux d'approbation
- Personnalisation de marque
- Intégration d'entreprise
- Recherche avancée
- Rapports d'analyse
GitBook
Fonctionnalités : Développeur-friendly, contrôle de version, belle interface
Avantages clés :
- Intégration Git
- Historique des versions
- Collaboration d'équipe
- Domaine personnalisé
- Fonction de recherche
- Données d'analyse
Plateformes d'hébergement
GitHub Pages
Fonctionnalités : Hébergement gratuit, contrôle de version, domaine personnalisé
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
Netlify
Fonctionnalités : Déploiement rapide, accélération CDN, gestion de formulaire
# netlify.toml
[build]
publish = "dist"
command = "npm run build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[build.environment]
NODE_VERSION = "16"
Vercel
Fonctionnalités : Déploiement sans configuration, CDN global, déploiements de prévisualisation
{
"builds": [
{
"src": "package.json",
"use": "@vercel/static-build",
"config": {
"distDir": "dist"
}
}
],
"routes": [
{
"handle": "filesystem"
},
{
"src": "/(.*)",
"dest": "/index.html"
}
]
}
Outils d'automatisation
Intégration CI/CD
GitHub Actions
Exemple de workflow :
name: Documentation Build and Deploy
on:
push:
branches: [ main ]
paths: [ 'docs/**' ]
pull_request:
branches: [ main ]
paths: [ 'docs/**' ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Lint Markdown
uses: articulate/actions-markdownlint@v1
with:
config: .markdownlint.json
files: 'docs/**/*.md'
build:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build VitePress
run: npm run docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: docs/.vitepress/dist
deploy:
needs: build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
Hooks Pre-commit
Fichier de configuration .pre-commit-config.yaml
:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.32.2
hooks:
- id: markdownlint
args: ['--fix']
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
language_version: python3
- repo: local
hooks:
- id: docs-build
name: Build documentation
entry: npm run docs:build
language: system
files: '^docs/.*\.md$'
pass_filenames: false
Outils de génération de documentation
Auto-génération de documentation API
// Utiliser JSDoc pour générer la documentation API
/**
* Créer un nouvel utilisateur
* @param {Object} userData - Données de l'utilisateur
* @param {string} userData.name - Nom de l'utilisateur
* @param {string} userData.email - Adresse email
* @param {string} [userData.role=user] - Rôle de l'utilisateur
* @returns {Promise<Object>} Objet utilisateur créé
* @example
* const user = await createUser({
* name: 'John Doe',
* email: 'john@example.com'
* });
*/
async function createUser(userData) {
// Implémentation...
}
# Générer la documentation
jsdoc src/ -d docs/api/ -c jsdoc.conf.json
Documentation OpenAPI/Swagger
# openapi.yaml
openapi: 3.0.0
info:
title: API de gestion des utilisateurs
version: 1.0.0
description: API RESTful pour le système de gestion des utilisateurs
paths:
/users:
post:
summary: Créer un nouvel utilisateur
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
'201':
description: Utilisateur créé avec succès
content:
application/json:
schema:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: string
example: "12345"
name:
type: string
example: "John Doe"
email:
type: string
format: email
example: "john@example.com"
CreateUserRequest:
type: object
required:
- name
- email
properties:
name:
type: string
email:
type: string
format: email
role:
type: string
default: "user"
Outils d'optimisation des performances
Optimisation de la construction
Script d'optimisation des images
// optimize-images.js
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
async function optimizeImages(dir) {
const files = fs.readdirSync(dir);
for (const file of files) {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
await optimizeImages(filePath);
} else if (/\.(jpg|jpeg|png)$/i.test(file)) {
const outputPath = filePath.replace(/\.(jpg|jpeg|png)$/i, '.webp');
await sharp(filePath)
.webp({ quality: 80 })
.toFile(outputPath);
console.log(`Optimisé : ${file} -> ${path.basename(outputPath)}`);
}
}
}
optimizeImages('./docs/assets/images');
Script de construction de documentation
// build-docs.js
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
function buildDocs() {
console.log('📝 Démarrage de la construction de la documentation...');
// 1. Vérifier la syntaxe Markdown
console.log('🔍 Vérification de la syntaxe Markdown...');
execSync('markdownlint docs/', { stdio: 'inherit' });
// 2. Optimiser les images
console.log('🖼️ Optimisation des images...');
execSync('node optimize-images.js', { stdio: 'inherit' });
// 3. Construire le site statique
console.log('🏗️ Construction du site statique...');
execSync('vitepress build docs', { stdio: 'inherit' });
// 4. Générer le sitemap
console.log('🗺️ Génération du sitemap...');
generateSitemap();
console.log('✅ Construction de la documentation terminée!');
}
function generateSitemap() {
const baseUrl = 'https://yoursite.com';
const pages = findMarkdownFiles('./docs');
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${pages.map(page => ` <url>
<loc>${baseUrl}${page}</loc>
<lastmod>${new Date().toISOString().split('T')[0]}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>`).join('\n')}
</urlset>`;
fs.writeFileSync('./docs/.vitepress/dist/sitemap.xml', sitemap);
}
function findMarkdownFiles(dir, basePath = '') {
const files = [];
const items = fs.readdirSync(dir);
for (const item of items) {
const fullPath = path.join(dir, item);
const relativePath = path.join(basePath, item);
if (fs.statSync(fullPath).isDirectory()) {
files.push(...findMarkdownFiles(fullPath, relativePath));
} else if (item.endsWith('.md') && item !== 'README.md') {
const urlPath = relativePath
.replace(/\.md$/, '.html')
.replace(/\\/g, '/');
files.push('/' + urlPath);
}
}
return files;
}
buildDocs();
Guide de sélection des outils
Choisir les outils selon vos besoins
## Écriture de blog personnel
Combinaison recommandée :
- Éditeur : Typora ou Mark Text
- Déploiement : GitHub Pages + Jekyll
- Images : PicGo + GitHub
- Version : Git
## Collaboration de documentation d'équipe
Combinaison recommandée :
- Plateforme : Notion ou GitBook
- Éditeur : VS Code + plugins
- Version : Git + GitHub
- Automatisation : GitHub Actions
## Site de documentation technique
Combinaison recommandée :
- Générateur : VitePress ou Docusaurus
- Éditeur : VS Code
- Déploiement : Netlify ou Vercel
- Graphiques : Mermaid + draw.io
## Documentation API
Combinaison recommandée :
- Outils : Swagger/OpenAPI
- Génération : Redoc ou SwaggerUI
- Intégration : Postman
- Tests : Newman
## Documents académiques
Combinaison recommandée :
- Éditeur : Typora + Pandoc
- Formules : MathJax/KaTeX
- Citations : Zotero
- Conversion : Pandoc LaTeX
Comparaison des coûts
Type d'outil | Options gratuites | Options payantes | Version d'entreprise |
---|---|---|---|
Éditeur | VS Code, Mark Text | Typora (¥89) | - |
Hébergement | GitHub Pages | Netlify Pro (¥190/mo) | Hébergement personnalisé |
Collaboration | GitHub | Notion (¥64/mo/utilisateur) | Confluence (¥42/mo/utilisateur) |
Hébergement d'images | GitHub | Qiniu Cloud (¥0.1/GB) | Cloud privé d'entreprise |
Domaine | github.io | Domaine personnalisé (¥60/an) | Domaine d'entreprise |
Syntaxes liées
- Intégration HTML - Améliorations HTML
- Formules mathématiques - Expressions mathématiques LaTeX
- Diagrammes - Dessin de graphiques
- Meilleures pratiques - Recommandations d'écriture
Recommandations de résumé
Configuration recommandée pour débutant
🚀 Kit de démarrage rapide :
1. Éditeur : VS Code + Markdown All in One
2. Aperçu : Plugin d'aperçu en temps réel
3. Version : Git + GitHub
4. Déploiement : GitHub Pages
5. Images : Téléchargement direct vers le repo
💰 Coût : Entièrement gratuit
⏱️ Temps d'apprentissage : 1-2 heures
🎯 Adapté à : Blogs personnels, docs de petits projets
Configuration recommandée pour développeur avancé
⚡ Kit professionnel :
1. Éditeur : Typora + VS Code
2. Générateur : VitePress
3. Hébergement d'images : PicGo + stockage cloud
4. Collaboration : GitHub + Issues
5. Automatisation : GitHub Actions
6. Monitoring : Google Analytics
💰 Coût : ¥200-500/an
⏱️ Temps d'apprentissage : 1-2 jours
🎯 Adapté à : Équipes de développement, projets open source
Configuration d'entreprise
🏢 Kit d'entreprise :
1. Plateforme : Confluence ou GitBook
2. Édition : VS Code + plugins d'équipe
3. Version : Git d'entreprise
4. Déploiement : Cloud privé + CDN
5. Collaboration : Gestion complète des permissions
6. Intégration : CI/CD + monitoring & alertes
💰 Coût : ¥5000-20000/an
⏱️ Temps de déploiement : 1-2 semaines
🎯 Adapté à : Grandes entreprises, documentation de produits
En sélectionnant et configurant efficacement ces outils, vous pouvez construire un workflow de documentation Markdown professionnel et efficace, grandement améliorant l'efficacité de la création et de la maintenance de la documentation.