Travailler avec Markdown en Go : bibliothèques blackfriday, goldmark et chroma

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Markdown en Go (Golang) : aperçu des bibliothèques populaires



Go (Golang) est un langage compilé moderne souvent choisi pour créer des applications web haute performance, des utilitaires CLI et des outils de génération de sites statiques. L'une des tâches typiques est le traitement du balisage Markdown. Dans cet article, nous examinerons trois bibliothèques clés : blackfriday, goldmark et chroma, et montrerons comment les combiner pour créer un convertisseur complet de Markdown en HTML avec coloration syntaxique.



1. Pourquoi traiter Markdown en Go ?

Markdown est un langage de balisage léger largement utilisé dans la documentation, les blogs, les fichiers README et les systèmes de gestion de contenu. Dans l'écosystème Go, il existe plusieurs bibliothèques matures qui permettent :

  • Convertir Markdown en HTML pour la publication web.
  • Ajouter une coloration syntaxique pour les blocs de code.
  • Créer des extensions personnalisées (par exemple, support LaTeX, diagrammes ou blocs personnalisés).
  • S'intégrer dans des générateurs de sites statiques (Hugo, solutions personnalisées).


2. Bibliothèque blackfriday (v2)

Blackfriday est l'une des bibliothèques les plus anciennes et les plus populaires pour Go. Elle se distingue par sa grande vitesse et un comportement proche de la norme CommonMark. Installation :

go get github.com/russross/blackfriday/v2


Exemple simple d'utilisation :

package main

import ( "fmt" "github.com/russross/blackfriday/v2")

func main() { input := []byte("## Bonjour, Markdown !

Ceci est **du texte gras** et `du code`.") output := blackfriday.Run(input) fmt.Println(string(output))}


Résultat : du code HTML avec un titre h2, un paragraphe et des balises strong/code. Blackfriday prend en charge les extensions : tableaux, barré, listes de tâches (task lists) et liens automatiques. Pour les activer, utilisez :

html := blackfriday.Run(input,    blackfriday.WithNoExtensions(),    blackfriday.WithExtensions(blackfriday.CommonExtensions),)


3. Bibliothèque goldmark (recommandée)

Goldmark est un analyseur Markdown moderne écrit en Go pur. Il est entièrement conforme à la spécification CommonMark 0.30 et fournit une API flexible pour les extensions. Installation :

go get github.com/yuin/goldmark


Exemple de base :

package main

import ( "bytes" "fmt" "github.com/yuin/goldmark")

func main() { source := []byte("# Titre

Texte normal avec **gras** et *italique*.") var buf bytes.Buffer if err := goldmark.Convert(source, &buf); err != nil { panic(err) } fmt.Println(buf.String())}


Goldmark est facilement extensible. Les extensions intégrées incluent les tableaux, les listes de tâches, les notes de bas de page, les liens automatiques et la coloration syntaxique via chroma. Exemple avec l'extension tableaux :

import (    "github.com/yuin/goldmark"    "github.com/yuin/goldmark/extension")

markdown := goldmark.New( goldmark.WithExtensions(extension.Table),)


4. Coloration syntaxique avec chroma

Chroma est une bibliothèque de coloration syntaxique pour Go qui prend en charge plus de 190 langages de programmation et de nombreux thèmes. Installation :

go get github.com/alecthomas/chroma/v2


L'intégration avec goldmark se présente comme suit :

package main

import ( "bytes" "fmt" "github.com/alecthomas/chroma/v2/quick" "github.com/yuin/goldmark" highlighting "github.com/yuin/goldmark-highlighting/v2")

func main() { source := []byte("```gopackage main

import \\"fmt\\"

func main() { fmt.Println(\\"Hello, world!\\")}```") markdown := goldmark.New( goldmark.WithExtensions( highlighting.Highlighting,

Recommendations