web-dev-qa-db-fra.com

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

Je me demande s’il existe un utilitaire de ligne de commande permettant de prendre un fichier GitHub à la saveur de Markdown et de 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 j'aimerais ensuite le transformer en HTML normal. Il est important pour moi que ce qui apparaît sur GitHub soit exactement ce à quoi il devrait ressembler pour mon site Web. J'aimerais aussi vraiment utiliser les blocs clôturés avec ~~~, alors je préférerais ne pas utiliser uniquement la syntaxe standard de Markdown.

J'ai jeté un coup d'œil dans l'aperçu en direct de JavaScript en pensant pouvoir l'attacher à Node.js, mais ils disent qu'il est obsolète. J'ai consulté le référentiel Redcarpet, mais il ne semble pas qu'il dispose d'une interface en ligne de commande.

J'ai lancé ma propre solution, cependant, comme aucune solution ici n'est clairement meilleure que les autres, je laisserai la question sans réponse choisie.

390
McLeopold

J'ai écrit un petit CLI dans Python et ajouté le support GFM. Cela s'appelle Grip (Github Readme Instant Preview) .

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 changer de port:

$ grip 8080

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

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

Caractéristiques notables:

  • Rend les pages exactement comme sur GitHub
  • Blocs clôturés
  • API Python
  • Naviguez entre les fichiers liés (merci, vladwing !) ajouté dans la version 2.0
  • Exporter vers un fichier unique (merci, iliggio !) ajouté dans la version 2.0
  • Nouveau: Lire à partir de stdin et exporter vers stdout ajouté dans la version 3.0

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

431
Joe

Je n'ai pas trouvé de méthode rapide et facile pour Markdown à saveur de 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 and 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 $@
112
Alister Bulman

Peut-être que cela pourrait aider:

gem install github-markdown

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

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

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

29
James Lim
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 crois que vous pouvez étendre le module pour gérer les ajouts de GitHub.

28
Gringo Suave

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 lecteur local avant de les envoyer à GitHub. C’est pourquoi j’en ai créé un, basé sur Node.js: - https://github.com/ypocat/gfms

Vous pouvez donc peut-être réutiliser le fichier showdown.js 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 cette réponse.

23
youurayy

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

pandoc README.md | lynx -stdin

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

Cela fonctionne très bien: il remplit mon terminal, les raccourcis sont indiqué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 .

Installation:

Sudo apt-get install pandoc lynx
17
Barry Staes

GitHub a ne API Markdown que vous pouvez utiliser.

16
kehers

Utilisez marqué . Il supporte 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
<p>hello world</p>
13
zemirco

Ceci est principalement une suite à la réponse de @ barry-staes pour l'utilisation de Pandoc . Homebrew l'a aussi, si vous êtes sur un 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

Ouvrir dans 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 TextMate

Vous pouvez toujours diriger la sélection actuelle ou le document actuel vers l'un des éléments ci-dessus, comme le permettent la plupart des éditeurs. Vous pouvez également configurer facilement l'environnement pour que pandoc remplace le processeur de 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 Préférences → Variables) sur /path/to/ghmarkdown, ce qui remplacera le processeur de réduction par défaut.

10
Justin Middleton

J'ai créé un outil similaire à la fonctionnalité Aperçu d'Atom, mais en tant qu'application autonome. Je ne sais pas si c'est ce que vous cherchez, mais cela pourrait être utile. - https://github.com/yoshuawuyts/vmd

vmd

10
Yoshua Wuyts

pandoc avec browser fonctionne bien pour moi.

Utilisation: 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

7
binarymason

Voir également https://softwareengineering.stackexchange.com/a/128721/24257 .


Si vous êtes intéressé par la façon dont nous [Github] rendons les fichiers Markdown, vous pouvez vérifier Redcarpet , notre interface Ruby vers la bibliothèque Sundown.

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

5
Lazy Badger

Construire sur ce commentaire J'ai écrit une ligne pour appuyer le Github Markdown API en utilisant curl et jq.

Collez cette fonction bash sur la ligne de commande ou dans votre ~/.bash_profile:

mdsee(){ 
    HTMLFILE="$(mktemp -u).html"
    cat "$1" | \
      jq --Slurp --raw-input '{"text": "\(.)", "mode": "markdown"}' | \
      curl -s --data @- https://api.github.com/markdown > "$HTMLFILE"
    echo $HTMLFILE
    open "$HTMLFILE"
}

Et ensuite, pour voir le rendu HTML exécuté dans le navigateur:

mdsee readme.md

Remplacez open "$HTMLFILE" par lynx "$HTMLFILE" si vous avez besoin d'une solution de terminal pure.

3
notpeter

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

GFMS - Github Flavored Markdown Server

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

Fonctionnalités:

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

Depuis lors, GitHub a développé un éditeur de texte modulaire Nice appelé Atom (basé sur Chromium et utilisant les modules Node.js pour les packages).

Un paquet préinstallé par défaut Markdown Preview vous permet d’afficher votre aperçu dans un onglet séparé en utilisant Ctrl + Shift + M.

Je n'ai pas testé sa syntaxe complète, mais comme elle provient de GitHub, je serais très surpris que la syntaxe de l'aperçu soit différente de la leur (blocs isolés utilisant ~~~ work).

Maintenant, bien qu’il ne soit pas techniquement basé sur une ligne de commande, il utilise Node.js et les sorties dans un rendu DOM -, ce qui peut aider les personnes qui tentent de restituer du code HTML GitHub basé sur la syntaxe. serveur Web basé sur js, ou modifiez simplement son fichier README.md hors ligne.

3
Que

Ma solution finale a été d'utiliser Python Markdown . J'ai roulé le mienextension qui a fixé les blocs de clôture.

3
McLeopold

J'ai réussi à utiliser un script d'une ligne Ruby à cette fin (même s'il devait être inséré dans un fichier séparé). Tout d’abord, exécutez ces commandes une fois sur chaque ordinateur client sur lequel vous allez pousser les documents:

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, appelez-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 avec cette réponse.

2
Pr0methean

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

2
Tivie

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

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

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

mdviewer README.md
2
Sandeep

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

Cependant, il ne semble pas gérer l'option de coloration syntaxique pour le code; c'est-à-dire que la fonction ~~~Ruby ne fonctionne pas. Il n'imprime que 'Ruby'.

1
JESii

J'utilise Pandoc avec l'option --from=gfm pour GitHub Flavored Markdown comme ceci:

$ pandoc my_file.md   --from=gfm -t html -o my_file.html
1
Asme Just

Basé sur réponse de Jim Lim , j'ai installé le gem GitHub Markdown. Cela comprenait un script appelé gfm qui prend un nom de fichier sur la ligne de commande et écrit le code HTML équivalent sur la sortie standard. J'ai légèrement modifié cela 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] [<file>]
  Convert a GitHub-Flavored Markdown file to HTML and write to standard output.
  With no <file> or when <file> 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)
0
gerrard00

En améliorant les réponses @ barry-state et @Sandeep pour les utilisateurs réguliers d'élinks, vous ajouteriez ce qui suit à .bashrc:

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

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

0
daBertl

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

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

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

Notez que les deux appels à wget sont nécessaires. Si vous ne lancez que la seconde, vous manquerez certaines dépendances nécessaires pour afficher les pages correctement.

0