GitHub風味のMarkdownをレンダリングするためのコマンドラインユーティリティはありますか?


414

GitHub風味のMarkdownファイルを取得し HTMLにレンダリングするためのコマンドラインユーティリティがあるかどうかと思います。

私はGitHub wikiを使用してWebサイトのコンテンツを作成しています。サーバー上でリポジトリのクローンを作成し、それを通常のHTMLに処理したいと考えています。私にとって重要なのは、GitHubに表示されるのは、自分のWebサイトをどのように探すかということです。また、fencedブロックを~~~で使用したいので、標準のMarkdown構文のみを使用したくありません。

JavaScriptのライブプレビューを少し調べて、Node.jsにフックできると考えましたが、非推奨であるとのことです。redcarpetリポジトリを確認しましたが、コマンドラインインターフェイスがないようです。

私は自分で解決策を提示しましたが、ここでは他の解決策より明らかに優れている解決策はないので、選択した回答なしで質問を残します。


2
RE:更新:--outブラウザではなくHTMLファイルにレンダリングするためのグリップに引数を追加した場合、それは許容されますか?
Joe

@ジョーはそのオプションを追加してください!
bguiz 2013

@McLeopold @bguiz --exportは、GFMとそのスタイルを単一のファイルにレンダリングするオプションをデプロイしました。これは質問に答えますか?
Joe

3
@McLeopold、ジョーは単純な再利用可能なソリューションを作成することでこれを公園から打ち消し、彼に答えを与えたいかもしれません。
ジェームズマクマホン

1
Github自体はSundownを使用します。stackoverflow.com/a/7694931/632951を
Pacerier '18

回答:


447

Pythonで小さなCLIを作成し、GFMサポートを追加しました。これはGrip(Github Readme Instant Preview)と呼ばれています。

それをインストールします:

$ pip install grip

そしてそれを使用するには、単に:

$ grip

次ににアクセスlocalhost:5000してreadme.md、その場所にあるファイルを表示します。

独自のファイルを指定することもできます。

$ grip CHANGES.md

そしてポートを変更します:

$ grip 8080

そしてもちろん、特にGitHub-Flavored Markdownを、オプションでリポジトリコンテキストでレンダリングします。

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

注目すべき機能:

  • GitHubとまったく同じようにページをレンダリングします
  • フェンスで囲まれたブロック
  • Python API
  • 2.0で追加されたリンクされたファイル間を移動(ありがとう、vladwing!)
  • 2.0で追加された単一ファイルへのエクスポート(ありがとう、ligiggio!)
  • 新:3.0で追加されたものから読み取りstdin、エクスポートするstdout

これがここの誰かを助けることを願っています。ご覧ください


1
Pythonistasのインストールの容易さを打ち負かすことはできません。
RichVel 2013

29
これは「githubマークダウンプレビュー」の最初のヒットになるはずです。それ以外はすべて複雑で、機能しないか、GitHubのすべての機能を実行できません。grip箱から出してすぐに動作します。
Bluu 2013

1
@Houdiniその問題は時代遅れです。Flaskは3.3をサポートしています。flassk.pocoo.org/ docs / python3を参照してください。トピックgithub.com/mitsuhiko/flask/issues/587に関するより最近のGithubスレッドを以下に示します。更新が必要な別の依存関係がある場合は、問題またはプルリクエストを自由に開いてください。
ジョー

3
1時間あたり60回を超える更新を行う場合、このパッケージにはアクティブなインターネット接続とgithub認証資格情報(コマンドラインで指定)が必要であることに注意してください。
レオ2015年

13
先に述べたように、これはGithubに渡され、GithubにMarkdownをレンダリングさせるため、これは特に優れたソリューションとは思いません。Githubにアクセスできるインターネット接続が必要です。Githubが停止すると、このツールは機能しなくなります。完全にオフラインのソリューションが欲しいです。
Jez、2015年

114

GitHub風味のMarkdownをすばやく簡単に見つける方法はわかりませんが、もう少し一般的なバージョンであるPandocを見つけました。Markdown、Rest、HTML、その他を含む多くのフォーマットとの間で変換を行います。

Makefileすべての.mdファイルを.htmlに変換するも開発しました(大部分は書き込み、マークダウン、パンドックの例にあります)。

# '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
「watch pandoc ...」を使用して継続的にマークダウンファイルをhtmlに変換し、これを使用してリアルタイムの「スクロールした場所にとどまる」機能をリアルタイムで取得するchrome「live reload」拡張機能を使用しています。 。chrome.google.com/webstore/detail/livereload/…–
Brad Parks

1
PandocはGFMを正常に読み取りますが、GitHubと同じHTMLを生成しません。たとえば、<pre/>GFMソースに複数行のタグがある場合、GandHub <br/>のレンダラーであるにもかかわらず、Pandocは改行用のタグを挿入します。先頭の空白を取り除き、コンテンツをそのままにしているようです。
David Moles

1
結果のHTMLに適切なスタイルを設定するにはどうすればよいですか?たとえば、出力は引き続きTimes New Romanでレンダリングされます。
Holistic Developer

Pandocのインストール手順はこちらです。macOSの場合:brew install pandoc
Master of Ducks、2018年

1
も入力形式gfmも、markdown_githubコードブロックなどを正しくレンダリングしません。
user5359531

29

多分これは役立つかもしれません:

gem install github-markdown

ドキュメントはありませんが、gollumのドキュメントから入手しました。rubydoc.infoを見ると、次のように使用できます。

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

あなたのRubyコードで。これをスクリプトに簡単にラップして、コマンドラインユーティリティに変換できます。

#!/usr/bin/env ruby

# render.rb
require 'github/markdown'

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

で実行し./render.rb path/to/my/markdown/file.mdます。これは、サニタイズなしの本番環境での使用には安全ではないことに注意してください。


1
ジムに感謝します。事実上存在しない例が原因で、私は必要なステップで止まっていました(ダッシュをスラッシュで置き換えることで作成されました)。;)
plesatejvlk

これは、すでにNPMを使用している場合に最適です。DOxygenが原因で、特にgithub風味のマークダウンとHTMLへのエクスポートで常に問題が発生するため、私はそれを使用する必要がありました。
kayleeFrye_onDeck 2016年

これはローカルで実行されていますか、それともGitHub APIにデータを送信していますか?
user5359531

28
pip3 install --user markdown
python3 -m markdown readme.md > readme.html

GitHub拡張機能は処理しませんが、何もしないよりはましです。モジュールを拡張してGitHubの追加を処理できると思います。


1
/ usr / bin / python:markdownはパッケージであり、直接実行することはできません
Kazimieras Aliulis

2
派手なタグのないシンプルなHTML出力。
ハリルカスカバルチ2015

23

おそらくあなたが望むものではないかもしれませんが、Node.jsについて言及したので、GitHubにコミットする前にローカルドライブでGitHub Flavored Markdownのドキュメントをプレビューするための優れたツールが見つからなかったため、本日、Node.jsに基づいて作成しました:https ://github.com/ypocat/gfms

したがって、質問がまだ実際にある場合は、おそらくそこからshowdown.jsをWikiに再利用できます。そうでない場合、多分私と同じ問題に直面している他の人が(私と同じように)この質問とその答えを見つけるでしょう。


よくやったね ノードアプリケーションを作成するときに、RubyやPythonに頼らなくても済むようになりました。これはすばらしいことです。
jedd.ahyoung 2015

19

端末でREADME.mdファイルを読み取るには、次のコマンドを使用します。

pandoc README.md | lynx -stdin

PandocはそれをHTML形式で出力し、Lynxが端末にレンダリングします。

それはうまくいきます:それは私の端末を満たし、ショートカットは以下に示されています、私はスクロールできます、そしてリンクは機能します! ただし、フォントサイズは1つしかありませんが、色+インデント+配置で補います。

インストール:

sudo apt-get install pandoc lynx

1
問題は、特にコマンドラインの使用法についてです。独自のrubyスクリプト(またはegadノードサーバー)を書く前に、これを試してみてください。
Cora Middleton

まさにこれはあなたの端末の内部で動作します。または、お気に入りの(デスクトップ?)ブラウザーがそのフォルダーにアクセスしてpandoc readme.md -o readme.md.html、結果のファイルを開くことができる場合。
Barry Staes、2015年

@ baerry-staesはい、申し訳ありませんが、あなたの答えが私の好意的な答えであることは明らかでした。
Cora Middleton

@JustinMiddletonはい私はそれを得た、ありがとう。私のコメントは、デスクトップユーザーのためにいくつかの追加情報を追加することだけでした。
バリーステイズ2015年

1
私は他の5〜6台のコンソールmdリーダーを試しましたが、これはこれまでのところ最良の解決策です。最も基本的な機能を構成に追加して、使用を少し早くしました。function md { pandoc $@ | lynx -stdin }
ラスブラウン


13

使用する マークされたをます。GitHubフレーバーマークダウンをサポートし、Node.jsモジュールとして、コマンドラインから使用できます。

例は次のとおりです。

$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>

1
これは、コードブロックの構文強調表示のような機能やチェックリストのような新しい機能をサポートしていないことに気づきました。しかし、ちょっとそれはほとんどの方法を取得します!
bguiz 2013

非常にいいですが、欠けているのはテーブルの境界線だけです。まあ、少なくとも私はそれらをまったくレンダリングできます。これはまさに私が必要としているものです。GFMにパイプし、HTMLにパイプします:)
Xandaros 2014年

この例について混乱していますが、何^Dですか?
マシュー

10

これは主に、Pandocを使用するための@ barry-staesの回答の続きです。Macを使用している場合、Homebrewにも同様の機能があります。

brew install pandoc

Pandocは、markdown_github名前による入力フォーマットとしてGFMをサポートしています。

ファイルに出力

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

Lynxで開く

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

OS Xのデフォルトのブラウザーで開く

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

TextMate統合

ほとんどのエディターで許可されているように、現在の選択または現在のドキュメントを常に上記のいずれかにパイプすることができます。またpandocMarkdownで使用されるデフォルトのMarkdownプロセッサを置き換えるように環境を簡単に構成することもできます。バンドルで。

まず、次の内容のシェルスクリプトを作成します(私はそれを呼び出しますghmarkdown):

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

次に、TM_MARKDOWN変数を(「設定」→「変数」で)に設定でき/path/to/ghmarkdownます。これにより、デフォルトのMarkdownプロセッサーが置き換えられます。


10

Atomのプレビュー機能に似たツールをスタンドアロンアプリケーションとして作成しました。これがあなたが探しているものかどうかはわかりませんが、役に立つかもしれません。- https://github.com/yoshuawuyts/vmd

vmd


あなたはまだこれをサポートしていますか?今日はNPMでインストールしようとしましたが、サイコロはありませんでした。> downloading electron-v0.36.9-win32-x64.zip>エラー:自己署名証明書
kayleeFrye_onDeck 2016年

1
うん、そうだ!これを実行したnpm /ノードのバージョンは何ですか?-GHの問題を自由に公開してください。これを確認します。ありがとう!
Yoshua Wuyts 2016年

8

pandocbrowser私のためによく働きます。

使用法: cat README.md | pandoc -f markdown_github | browser

インストール(Mac OSXを使用していると想定):

  • $ brew install pandoc

  • $ brew install browser

またはDebian / Ubuntuの場合: apt-get install pandoc browser


1
apt-get isntall pandocbrewのような安全でないローカルなものを使用する必要はありません。
ドミニクジョージ

1
@DominikGeorgeタイプミスがあります。インストールではなく、インストールではありませ
フェデリコトマセッティ

11
@DominikGeorge macOSにはapt-getはありません。
richrad

6

https://softwareengineering.stackexchange.com/a/128721/24257も参照してください


Markdownファイルのレンダリング方法[Github]に興味がある場合は、SundownライブラリへのRubyインターフェースであるRedcarpetをチェックしてください。

Redcarpetを使用するRubyスクリプトは、ローカルRubyがある場合、「コマンドラインユーティリティ」になります。


アイデアはありません-Rubyを書いておらず、Redcarpetのソースも読みませんでした
Lazy Badger

@ LazyBadger、Sundownは実際のパーサーです(Cで記述)。レッドカーペットは必要ありません。
Pacerier

6

このコメントに基づいて、とを使用してGithub Markdown APIをヒットするワンライナーを作成curlしましたjq

このbash関数をコマンドラインまたは次の場所に貼り付けます~/.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"
}

そして、レンダリングされたブラウザ内のHTMLを表示するには、次を実行します。

mdsee readme.md

交換するopen "$HTMLFILE"lynx "$HTMLFILE"あなたは純粋なターミナルソリューションを必要とする場合。


4

GitHubは、(Chromiumに基づいており、Node.jsを使用する)Atomと呼ばれる素晴らしいモジュラーテキストエディターを(以来)開発しています、パッケージにモジュールをています。

デフォルトのプリインストールパッケージMarkdown Previewでは、Ctrl+ Shift+ を使用して別のタブにプレビューを表示できますM

私はその完全な構文をテストしていませんが、GitHubからのものであるため、プレビューの構文がそれらの構文と異なる場合は非常に驚きます(使用するフェンス付きブロック ~~~作業)。

技術的にはコマンドラインベースではありませんが、Node.jsを使用してDOMベースのレンダラーに出力します。これは、Node.jsベースのウェブサーバーでGitHub構文ベースのHTMLをレンダリングしたり、編集したりするのに役立つ可能性があります。 / his README.mdオフライン。


1
Atom では、gfm-pdfatom.io/packages/gfm-pdf)というパッケージをインストールできます。これは、マークダウンドキュメントをHTMLやPDFドキュメントにエクスポートします。ライブラリwkhtmltopdfが必要です。
spren9er 2015


3

GFM Markdownドキュメントを閲覧するための本当に素晴らしくてシンプルなツールがあります:

GFMS-Githubフレーバーマークダウンサーバー

これはシンプルで軽量なHTTPサーバーであり、構成する必要はありません。マークダウンファイルを含む任意のディレクトリで起動して、それらを参照できます。

特徴:

  • GFM Markdownの完全サポート
  • ソースコード構文の強調表示
  • ファイルとディレクトリの閲覧
  • 見栄えの良い出力(および構成可能なCSSスタイルシート)
  • PDFにエクスポート

3

私はなんとかそのために1行のRubyスクリプトを使用することができました(ただし、別のファイルに入れる必要がありました)。まず、ドキュメントをプッシュする各クライアントマシンでこれらのコマンドを1回実行します。

gem install github-markup
gem install commonmarker

次に、このスクリプトをクライアントイメージにインストールして呼び出しますrender-readme-for-javadoc.rb

require 'github/markup'

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

最後に、次のように呼び出します。

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

ETA:これはStackOverflow-flavor Markdownの助けにはなりませんが、この回答は失敗しているようです。


これらのツールはgithubで使用されるものであるため、これはそれらすべてからの「ソースに最も近い」回答だと思います。
memoselyk

3

私は次の--from=gfmようにGitHub Flavored MarkdownのオプションでPandocを使用します。

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

Linux mint 18のpandoc 1.16.0.2を使用すると、エラーが発生しますpandoc: Unknown reader: gfm。2.2.1に移動すると、これが修正されます。
kidmose

Pandoc 2.1.2でテストしました。
Asme Just

ubuntuに2.2.1をインストールする方法?
Alexander Mills

@AlexanderMillsやってみましたsudo apt install pandocか?
ASMEただ、

2

@ barry-staeのソリューションの改善。このスニペットを〜/ .bashrcに貼り付けます

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

その後、コマンドラインからファイルをすばやく表示できます。また、SSH / Telnetセッションでうまく機能します。

mdviewer README.md

2

遅い追加ですが、showdownjsには、MDをHTMLに解析するために使用できるCLIツールがあります。


1

私はあなたのためにこれを行うウェブサイトを見つけました:http : //tmpvar.com/markdown.html。マークダウンに貼り付けると、表示されます。うまく動作するようです!

ただし、コードの構文強調表示オプションは処理されないようです。つまり、この~~~ruby機能は動作しません。それは単に「ルビー」を印刷します。


tmpvarは、テーブルのようなGFMバージョンの機能強化を行っていないようです
Greg

0

elinksの通常のユーザー向けの@ barry-staeと@Sandeepの回答を改善するには、.bashrcに以下を追加します。

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

pandoc(およびelinks)をインストールすることを忘れないでください。


0

ジムリムの回答に基づいて、GitHub Markdown gemをインストールしました。これには、コマンドラインでファイル名を取得し、同等のHTMLを標準出力に書き込むgfmというスクリプトが含まれていました。ファイルをディスクに保存し、標準のブラウザーを起動して開くように少し変更しました。

#!/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)

1
RubyとCucumberのフェンス付きブロックでこれを試しました。フェンス(ruby, キュウリなど)はフェンスとして認識されているように見えますが(固定幅のテキストでレンダリングされるため)、構文の強調表示はありません。なぜか?
キースベネット

0

「迅速かつ汚い」アプローチはwget、クローンを作成する代わりに、ユーティリティを使用してWiki HTMLページをダウンロードすることです。たとえば、これはGitHubからHystrix wikiをダウンロードした方法です(私はUbuntu 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

最初の呼び出しは、wikiエントリページとそのすべての依存関係をダウンロードします。2番目は、その上のすべてのサブページを呼び出します。を開いてwikiを閲覧できますNetflix/Hystrix/wiki.1.html

両方の呼び出しwgetが必要であることに注意してください。2つ目を実行しただけでは、ページを適切に表示するために必要ないくつかの依存関係が失われます。


-1

Markdownファイルからドキュメントを生成する必要があり、GitHubスタイルがかなり良いので、私は最近あなたが望むものを作りました。それを試してみてください。Node.jsで記述されています。

gfm


モジュールが9か月間更新されていないのはわかっています。なぜ古い投稿に反対票を投じるのですか?
Gabriel Llamas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.