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.
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:
stdin
et exporter vers stdout
ajouté 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 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 $@
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.
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.
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.
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
GitHub a ne API Markdown que vous pouvez utiliser.
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>
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.
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
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
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
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.
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:
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.
Ma solution finale a été d'utiliser Python Markdown . J'ai roulé le mienextension qui a fixé les blocs de clôture.
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.
Ajout tardif mais showdownjs a un outil CLI que vous pouvez utiliser pour analyser MD en HTML.
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
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'.
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
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)
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).
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.