Existe-t-il un utilitaire de ligne de commande pour le rendu de Markdown à saveur GitHub?

Je me demande s’il existe un utilitaire de ligne de commande pour prendre un fichier Markdown à saveur GitHub et le rendre au format HTML.

J’utilise un wiki GitHub pour créer du contenu de site Web. J’ai cloné le référentiel sur mon serveur et je voudrais ensuite le traiter en HTML normal. Il est important pour moi que ce qui apparaît sur GitHub soit exactement ce qu’il faut pour mon site Web. J’aimerais aussi vraiment utiliser les blocs ~~~ avec ~~~ , alors je préfère ne pas utiliser uniquement la syntaxe Markdown standard.

J’ai regardé un peu dans l’aperçu en direct de JavaScript en pensant que je pouvais le connecter à Node.js, mais ils disent que c’est obsolète. J’ai regardé le repository de redcarpet, mais il ne semble pas qu’il y ait une interface de ligne de commande.

J’ai roulé ma propre solution, cependant, aucune solution n’étant clairement meilleure que les autres, je laisserai la question sans réponse sélectionnée.

J’ai écrit une petite CLI dans Python et ajouté le support GFM. Il s’appelle Grip (Prévisualisation instantanée de Github Readme) .

Installez-le avec:

 $ pip install grip 

Et pour l’utiliser, simplement:

 $ grip 

Ensuite, visitez localhost:5000 pour afficher le fichier readme.md à cet emplacement.

Vous pouvez également spécifier votre propre fichier:

 $ grip CHANGES.md 

Et changez de port:

 $ grip 8080 

Et bien sûr, rendre spécifiquement GitHub-Flavored Markdown, éventuellement avec le contexte du référentiel:

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

Caractéristiques notables:

  • Rend les pages à apparaître exactement comme sur GitHub
  • Blocs clôturés
  • API Python
  • Naviguer entre les fichiers liés (merci, vladwing !) Ajouté dans 2.0
  • Exporter dans un seul fichier (merci, iliggio !) Ajouté dans 2.0
  • Nouveau: lecture depuis stdin et exportation vers stdout ajoutée dans la version 3.0

J’espère que cela aide quelqu’un ici. Check it out .

Je n’ai pas trouvé de méthode simple et rapide pour Markdown à saveur GitHub, mais j’ai trouvé une version légèrement plus générique – Pandoc . Il convertit de / vers un certain nombre de formats, y compris Markdown, Rest, HTML et autres.

J’ai également développé un Makefile pour convertir tous les fichiers .md en .html (en grande partie à l’exemple de Writing, 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 $@ 

Peut-être que cela pourrait aider:

 gem install github-markdown 

Aucune documentation n’existe, mais je l’ai obtenue à partir de la documentation de gollum . En regardant rubydoc.info , il semble que vous puissiez utiliser:

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

dans votre code Ruby. Vous pouvez encapsuler cela facilement 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 le ./render.rb path/to/my/markdown/file.md Notez que ceci n’est pas sûr pour une utilisation en production sans désinfection.

 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 GitHub.

Probablement pas ce que vous voulez, mais puisque vous avez mentionné Node.js: je ne pouvais pas trouver un bon outil pour prévisualiser la documentation de GitHub Flavored Markdown sur mon disque local avant de les confier à GitHub. : //github.com/ypocat/gfms

Donc, peut-être que vous pouvez 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 auront trouvé (comme je l’ai fait) cette question et cette réponse.

Pour lire un fichier README.md dans le terminal que j’utilise:

 pandoc README.md | lynx -stdin 

Pandoc le produit au format HTML, que Lynx rend dans votre terminal.

Cela fonctionne très bien: il remplit mon terminal, les raccourcis sont montrés ci-dessous, je peux faire défiler et les liens fonctionnent! Il n’y a qu’une taille de police cependant, mais les couleurs + indentation + alignement compensent cela.

Installation:

 sudo apt-get install pandoc lynx 

GitHub a une API Markdown que vous pouvez utiliser.

Utilisez marqué . Il prend en charge GitHub Flavored Markdown, peut être utilisé comme module Node.js et à partir de la ligne de commande.

Un exemple serait:

 $ marked -o hello.html hello world ^D $ cat hello.html 

hello world

Ceci est principalement une suite à la réponse de @ barry-staes pour l’utilisation de Pandoc . Homebrew l’a aussi, si vous êtes sur Mac:

 brew install pandoc 

Pandoc prend en charge GFM en tant que format d’entrée via le nom markdown_github .

Sortie dans un fichier

 cat foo.md | pandoc -f markdown_github > foo.html 

Open in Lynx

 cat foo.md | pandoc -f markdown_github | lynx -stdin # To open in Lynx 

Ouvrir dans le navigateur par défaut sous OS X

 cat foo.md | pandoc -f markdown_github > foo.html && open foo.html # To open in the default browser on OS X` 

Intégration de TextMate

Vous pouvez toujours diriger la sélection actuelle ou le document en cours vers l’un des éléments ci-dessus, comme la plupart des éditeurs vous le permettent. Vous pouvez également configurer facilement l’environnement pour que pandoc remplace le processeur Markdown par défaut utilisé par l’ensemble Markdown .

Tout d’abord, créez un script shell avec le contenu suivant (je l’appellerai ghmarkdown ):

 #!/bin/bash # Note included, optional --email-obfuscation arg pandoc -f markdown_github --email-obfuscation=references 

Vous pouvez ensuite définir la variable TM_MARKDOWN (dans Preferences → Variables) sur /path/to/ghmarkdown , et elle remplacera le processeur Markdown par défaut.

J’ai créé un outil similaire à la fonctionnalité de prévisualisation d’Atom, mais en tant qu’application autonome. Je ne sais pas si c’est ce que vous recherchez, mais cela pourrait être utile. – https://github.com/yoshuawuyts/vmd

vmd

pandoc avec browser fonctionne bien pour moi.

Utilisation: cat README.md | pandoc -f markdown_github | browser cat README.md | pandoc -f markdown_github | browser

Installation (en supposant que vous utilisez Mac OSX):

  • $ brew install pandoc

  • $ brew install browser

Ou sur Debian / Ubuntu: apt-get install pandoc browser

Voir aussi https://softwareengineering.stackexchange.com/a/128721/24257 .


Si vous vous intéressez à la façon dont nous [Github] rendons les fichiers Markdown, vous pouvez consulter Redcarpet , notre interface Ruby vers la bibliothèque Sundown.

Ruby-script, qui utilise Redcarpet , sera “utilitaire de ligne de commande”, si vous avez Ruby local

Ma solution finale consistait à utiliser Python Markdown . J’ai roulé ma propre extension qui a fixé les blocs de clôture.

Il existe un outil très agréable et simple pour parcourir les documents GFM Markdown:

GFMS – Github Flavored Markdown Server

C’est un serveur HTTP simple et léger (sans configuration requirejse) que vous pouvez démarrer dans n’importe quel répertoire contenant des fichiers de démarques pour les parcourir.

Caractéristiques:

  • Prise en charge complète de GFM Markdown
  • Mise en évidence de la syntaxe du code source
  • Parcourir des fichiers et des répertoires
  • Beau rendu (et feuilles de style CSS configurables)
  • Exporter au format PDF

GitHub a (depuis) ​​développé un agréable éditeur de texte modulaire appelé Atom (basé sur Chromium et utilisant des modules Node.js pour les paquets).

Un package préinstallé par défaut Markdown Preview vous permet d’afficher votre aperçu dans un onglet distinct à l’aide de Ctrl + Maj + M.

Je n’ai pas testé sa syntaxe complète, mais comme cela vient de GitHub, je serais très surpris si la syntaxe de l’aperçu était différente de la leur (blocs ~~~ utilisant ~~~ work).

Maintenant, bien qu’il ne soit pas techniquement basé sur une ligne de commande, il utilise Node.js et les sorties sur un moteur de rendu DOM , ce qui peut aider n’importe qui à afficher le code HTML basé sur la syntaxe GitHub sur un serveur Web basé sur Node.js. / son README.md hors ligne.

Améliorer la solution de @ barry-stae. Collez cet extrait dans ~ / .bashrc

 function mdviewer(){ pandoc $* | lynx -stdin } 

Ensuite, nous pouvons afficher rapidement le fichier à partir de la ligne de commande. Fonctionne également très bien sur les sessions SSH / Telnet.

 mdviewer README.md 

Ajout tardif mais showdownjs a un outil CLI que vous pouvez utiliser pour parsingr MD en HTML.

J’ai trouvé un site Web qui le fera pour vous: http://tmpvar.com/markdown.html . Collez votre Markdown et l’affichera pour vous. Cela semble fonctionner très bien!

Cependant, il ne semble pas gérer l’option de mise en évidence de la syntaxe pour le code; c’est-à-dire que la fonctionnalité ~~~ruby ne fonctionne pas. Il imprime juste ‘ruby’.

J’ai réussi à utiliser un script Ruby à une ligne pour cela (bien qu’il faille le faire dans un fichier séparé). Tout d’abord, exécutez ces commandes une fois sur chaque machine cliente à partir de laquelle vous lancerez docs:

 gem install github-markup gem install commonmarker 

Ensuite, installez ce script dans votre image client et appelez-le render-readme-for-javadoc.rb :

 require 'github/markup' puts GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, File.read('README.md')) 

Enfin, invoquez-le comme ceci:

 ruby ./render-readme-for-javadoc.rb >> project/src/main/javadoc/overview.html 

ETA: Cela ne vous aidera pas avec StackOverflow-flavour Markdown, qui semble échouer sur cette réponse.

En améliorant les réponses @ barry-stae et @Sandeep pour les utilisateurs réguliers de liens, vous devez append ce qui suit à .bashrc:

 function mdviewer() { pandoc $* | elinks --force-html } 

N’oubliez pas d’installer pandoc (et elinks).

Sur la base de la réponse de Jim Lim , j’ai installé le joyau GitHub Markdown. Cela incluait un script appelé gfm qui prend un nom de fichier sur la ligne de commande et écrit le code HTML équivalent dans la sortie standard. Je l’ai légèrement modifié pour enregistrer le fichier sur le disque, puis pour ouvrir le navigateur standard avec launchy:

 #!/usr/bin/env ruby HELP = <<-help Usage: gfm [--readme | --plaintext] [] Convert a GitHub-Flavored Markdown file to HTML and write to standard output. With no  or when  is '-', read Markdown source text from standard input. With `--readme`, the files are parsed like README.md files in GitHub.com. By default, the files are parsed with all the GFM extensions. help if ARGV.include?('--help') puts HELP exit 0 end root = File.expand_path('../../', __FILE__) $:.unshift File.expand_path('lib', root) require 'github/markdown' require 'tempfile' require 'launchy' mode = :gfm mode = :markdown if ARGV.delete('--readme') mode = :plaintext if ARGV.delete('--plaintext') outputFilePath = File.join(Dir.tmpdir, File.basename(ARGF.path)) + ".html" File.open(outputFilePath, "w") do |outputFile | outputFile.write(GitHub::Markdown.to_html(ARGF.read, mode)) end outputFileUri = 'file:///' + outputFilePath Launchy.open(outputFileUri) 

Une approche rapide consiste à télécharger les pages HTML du wiki à l’aide de l’utilitaire wget , au lieu de les cloner. Par exemple, voici comment j’ai téléchargé le wiki Hyssortingx depuis GitHub (j’utilise Ubuntu Linux):

  $ wget -e robots=off -nH -E -H -k -K -p https://github.com/Netflix/Hyssortingx/wiki $ wget -e robots=off -nH -E -H -k -K -I "Netflix/Hyssortingx/wiki" -r -l 1 https://github.com/Netflix/Hyssortingx/wiki 

Le premier appel téléchargera la page d’entrée du wiki et toutes ses dépendances. Le second appellera toutes les sous-pages. Vous pouvez parcourir maintenant le wiki en ouvrant Netflix/Hyssortingx/wiki.1.html .

Notez que les deux appels à wget sont nécessaires. Si vous exécutez simplement le second, vous allez manquer certaines dépendances requirejses pour afficher correctement les pages.

J’utilise Pandoc avec l’option --from=gfm comme ceci:

 $ pandoc markdown-sample.md --from=gfm -t html -o markdown-sample.html 

J’ai récemment fabriqué ce que vous vouliez, car j’avais besoin de générer de la documentation à partir de fichiers Markdown et le style GitHub est plutôt sympa. Essayez-le Il est écrit dans Node.js.

gfm