454 votes

Existe-t-il un utilitaire de ligne de commande pour rendre le format Markdown à la sauce GitHub ?

Je me demande s'il y a un utilitaire de ligne de commande pour prendre un Markdown à la sauce GitHub et le rendre en HTML.

J'utilise un wiki GitHub pour créer le contenu d'un site Web. J'ai cloné le référentiel sur mon serveur et j'aimerais ensuite le transformer en HTML normal. Il est important pour moi que ce qui apparaît sur GitHub corresponde exactement à ce qui doit être affiché sur mon site Web. J'aimerais également utiliser les blocs clôturés avec les éléments suivants ~~~ Je préfère donc ne pas utiliser uniquement la syntaxe Markdown standard.

J'ai regardé un peu dans le JavaScript live preview pensant que je pourrais l'accrocher dans Node.js, mais ils disent qu'il est déprécié. J'ai regardé le dépôt redcarpet, mais il ne semble pas y avoir d'interface en ligne de commande.

J'ai proposé ma propre solution, mais comme aucune solution n'est clairement meilleure que les autres, je vais laisser la question sans réponse choisie.

2 votes

RE : UPDATE : Si j'ai ajouté un --out pour saisir le rendu dans un fichier HTML plutôt que dans le navigateur, cela serait-il acceptable ?

0 votes

@Joe s'il vous plaît, ajoutez cette option !

1 votes

@McLeopold @bguiz vient de déployer la --export qui rend GFM et ses styles dans un seul fichier. Cela répond-il à la question ?

487voto

Joe Points 2650

J'ai écrit un petit CLI en Python et ajouté le support GFM. Il s'appelle Grip (aperçu instantané du Readme de Github) .

Installez-le avec :

$ pip install grip

Et pour l'utiliser, tout simplement :

$ grip

Alors, visitez localhost:5000 pour visualiser le readme.md à cet endroit.

Vous pouvez également spécifier votre propre fichier :

$ grip CHANGES.md

Et changer de port :

$ grip 8080

Et bien sûr, le rendu spécifique de Markdown à la sauce GitHub, avec éventuellement le contexte du dépôt :

$ grip --gfm --context=username/repo issue.md

Caractéristiques notables :

  • Rendre les pages pour qu'elles apparaissent exactement comme sur GitHub
  • Blocs clôturés
  • API Python
  • Naviguer entre les fichiers liés (merci, vladwing !) ajouté en 2.0
  • Exportation vers un seul fichier (merci, iliggio !) ajouté en 2.0
  • Nouveau : Lire à partir de stdin et l'exporter vers stdout ajouté en 3.0

J'espère que cela aidera quelqu'un ici. Consultez le site .

1 votes

Fonctionne vraiment bien et on ne peut pas battre la facilité d'installation pour les Pythonistes !

35 votes

Ce devrait être le premier résultat pour "github markdown preview". Tout le reste est compliqué, ne fonctionne pas, ou ne fait pas toutes les fonctionnalités de GitHub. grip fonctionne dès la sortie de la boîte.

0 votes

Merci pour l'astuce, un vrai bon paquet. Y a-t-il une raison pour laquelle il n'y a pas d'exportation HTML (css inclus) ?

120voto

Alister Bulman Points 12913

Je n'ai pas trouvé de méthode simple et rapide pour le format Markdown à la sauce GitHub, mais j'ai trouvé une version un peu plus générique Pandoc . Il convertit de/vers un certain nombre de formats, notamment Markdown, Rest, HTML et autres.

J'ai également développé un Makefile pour convertir tous les fichiers .md en .html (en grande partie grâce à l'exemple du site Rédaction, Markdown et Pandoc ) :

# 'Makefile'
MARKDOWN = pandoc --from gfm --to html --standalone
all: $(patsubst %.md,%.html,$(wildcard *.md)) Makefile

clean:
    rm -f $(patsubst %.md,%.html,$(wildcard *.md))
    rm -f *.bak *~

%.html: %.md
    $(MARKDOWN) $< --output $@

4 votes

J'ai utilisé "watch pandoc ..." pour convertir continuellement un fichier markdown en html, et l'extension chrome "live reload" pour obtenir la fonctionnalité en temps réel "stay where i'm scrolled too" avec ceci, et ça marche très bien. chrome.google.fr/webstore/detail/livereload/

3 votes

Pandoc lit bien le GFM mais ne génère pas le même HTML que GitHub. Par exemple, si vous avez un texte de plusieurs lignes, vous ne pouvez pas le lire. <pre/> dans votre source GFM, Pandoc placera la balise <br/> à la place des sauts de ligne, alors que le moteur de rendu de GitHub, bien qu'il supprime les espaces en tête, semble laisser le contenu intact.

1 votes

Comment faire pour obtenir un style agréable sur le HTML résultant ? Mon résultat est toujours rendu avec Times New Roman, par exemple.

31voto

Gringo Suave Points 5985
pip3 install --user markdown
python3 -m markdown readme.md > readme.html

Il ne gère pas les extensions GitHub, mais c'est mieux que rien. Je pense que vous pouvez étendre le module pour gérer les ajouts de GitHub.

1 votes

/usr/bin/python : markdown est un paquet et ne peut être exécuté directement

2 votes

Sortie HTML simple, sans balises fantaisistes.

1 votes

À proprement parler, il s'agit du "John Gruber's Markdown", et non pas du À la sauce GitHub Markdown.

29voto

Jim Lim Points 4981

Peut-être que ceci pourrait aider :

gem install github-markdown

Il n'existe pas de documentation, mais je l'ai obtenu à partir de l'adresse suivante gollum documentation. En regardant rubydoc.info il semble que vous puissiez l'utiliser :

require 'github/markdown'  
puts GitHub::Markdown.render_gfm('your markdown string')

dans votre code Ruby. Vous pouvez facilement envelopper cela dans un script pour le transformer en un utilitaire de ligne de commande :

#!/usr/bin/env ruby

# render.rb
require 'github/markdown'

puts GitHub::Markdown.render_gfm File.read(ARGV[0])

Exécutez-le avec ./render.rb path/to/my/markdown/file.md . Notez que ce n'est pas sûr pour une utilisation en production sans désinfection.

1 votes

Merci Jim, en raison de la quasi-absence d'exemples, j'étais bloqué à l'étape "require" (remplacer le tiret par une barre oblique a fonctionné) ;)

0 votes

C'est idéal si vous utilisez déjà NPM. J'ai dû l'utiliser, car DOxygen me causait des problèmes constants avec le markdown spécifique à github + l'exportation vers le HTML.

1 votes

Est-ce que cela fonctionne localement ou est-ce que cela envoie des données vers l'API GitHub ?

24voto

ypocat Points 871

Ce n'est probablement pas ce que vous voulez, mais puisque vous avez mentionné Node.js : je n'ai pas pu trouver un bon outil pour prévisualiser la documentation Markdown à la sauce GitHub sur mon disque local avant de la commettre sur GitHub, alors aujourd'hui j'en ai créé un, basé sur Node.js : https://github.com/ypocat/gfms

Vous pouvez donc peut-être réutiliser le showdown.js de celui-ci pour votre Wiki, si votre question est toujours d'actualité. Sinon, peut-être que d'autres personnes confrontées au même problème que moi trouveront (tout comme moi) cette question et sa réponse.

1 votes

Bien joué, mec. Ça m'évite d'avoir à recourir à Ruby ou Python quand j'écris une application de nœud, ce qui est génial.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X