是否有一个命令行实用程序用于呈现GitHub风味的Markdown?

问题描述 投票:387回答:25

我想知道是否有一个命令行实用程序来获取GitHub flavored Markdown文件并将其呈现为HTML。

我正在使用GitHub wiki来创建网站内容。我已经在我的服务器上克隆了存储库,然后将其处理为常规HTML。对我来说很重要的是,GitHub上出现的内容正是它应该如何寻找我的网站。我也非常喜欢使用带有~~~的隔离块,所以我宁愿不使用标准的Markdown语法。

我已经看了一下JavaScript实时预览,认为我可以将它挂钩到Node.js,但是他们说它已被弃用了。我查看了redcarpet存储库,但它看起来并不像它有一个命令行界面。

然而,我推出了自己的解决方案,因为这里没有解决方案明显优于其他解决方案,我会在没有选定答案的情况下留下问题。

command-line github markdown github-flavored-markdown
25个回答
431
投票

我用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中添加的单个文件(谢谢,iliggio!)
  • 新:从stdin读取并导出到3.0中添加的stdout

希望这能帮到这里的人。 Check it out


10
投票

我创建了一个类似于Atom预览功能的工具,但它是一个独立的应用程序。不确定这是否是您正在寻找的,但它可能会有所帮助。 - https://github.com/yoshuawuyts/vmd


7
投票

pandoc合作的browser对我来说效果很好。

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

安装(假设您使用的是Mac OSX):

  • $ brew install pandoc
  • $ brew install browser

或者在Debian / Ubuntu上:apt-get install pandoc browser


5
投票

另见https://softwareengineering.stackexchange.com/a/128721/24257


如果您对我们[Github]渲染Markdown文件的方式感兴趣,您可能需要查看Redcarpet,这是我们与Sundown库的Ruby接口。

使用Redcarpet的Ruby脚本将是“命令行实用程序”,如果你有本地Ruby的话


3
投票

我的最终解决方案是使用Python Markdown。我滚动了固定栅栏块的my own extension


3
投票

浏览GFM Markdown文档有一个非常好用且简单的工具:

GFMS - Github Flavored Markdown Server

它简单轻便(无需配置)HTTP服务器可以在任何包含markdown文件的目录中启动以浏览它们。

特征:

  • 完整的GFM Markdown支持
  • 源代码语法高亮
  • 浏览文件和目录
  • 好看的输出(和可配置的CSS样式表)
  • 导出为PDF

3
投票

GitHub已经(自)开发了一个很好的模块化文本编辑器,名为Atom(基于Chromium,并使用Node.js模块作为包)。

默认预安装包Markdown Preview允许您使用Ctrl + Shift + M在单独的选项卡中显示预览。

我没有测试它的完整语法,但由于它来自GitHub,如果预览的语法与他们的语法不同(使用~~~工作的围栏块),我会非常惊讶。

现在,虽然它在技术上不是基于命令行的,但它使用Node.js并输出到基于DOM的渲染器,这可能有助于任何人尝试在基于Node.js的网络服务器上渲染基于GitHub语法的HTML,或者只是编辑她/他的README.md离线。


3
投票

this comment的基础上,我写了一个单行使用Github Markdown APIcurl击中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 in-browser运行:

mdsee readme.md

如果您需要纯终端解决方案,请用open "$HTMLFILE"替换lynx "$HTMLFILE"


2
投票

改进@ barry-stae的解决方案。将此片段粘贴到〜/ .bashrc中

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

然后我们可以从命令行快速查看该文件。也适用于SSH / Telnet会话。

mdviewer README.md

2
投票

后期添加,但showdownjs有一个CLI工具,您可以使用它来解析MD到HTML。


2
投票

我设法为此目的使用单行Ruby脚本(尽管它必须放在一个单独的文件中)。首先,在您将推送文档的每台客户端计算机上运行一次这些命令:

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风格的Markdown没有帮助,这似乎在这个答案上失败了。


112
投票

我没有找到一种快速简便的GitHub风味Markdown方法,但我找到了一个更通用的版本 - Pandoc。它可以转换为多种格式,包括Markdown,Rest,HTML等。

我还开发了一个Makefile来将所有.md文件转换为.html(在很大程度上是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 $@

1
投票

我发现了一个可以为你做这个的网站:http://tmpvar.com/markdown.html。粘贴在Markdown中,它会为您显示。它似乎工作得很好!

但是,它似乎没有处理代码的语法高亮选项;也就是说,~~~ruby功能不起作用。它只是打印'红宝石'。


1
投票

我使用Pandoc选项--from=gfm用于GitHub Flavored Markdown,如下所示:

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

0
投票

改进@ barry-state和@Sandeep对常规elinks用户的答案,你可以将以下内容添加到.bashrc:

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

别忘了安装pandoc(和elinks)。


0
投票

基于Jim Lim's answer,我安装了GitHub Markdown宝石。其中包括一个名为gfm的脚本,该脚本在命令行上获取文件名并将等效的HTML写入标准输出。我稍微修改了一下将文件保存到磁盘然后用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
投票

“快速而肮脏”的方法是使用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入口页面及其所有依赖项。第二个将调用其上的所有子页面。您可以通过打开Netflix/Hystrix/wiki.1.html来浏览wiki。

请注意,两次调用wget都是必要的。如果您只运行第二个,那么您将错过正确显示页面所需的一些依赖项。


-1
投票

我最近做了你想要的,因为我需要从Markdown文件生成文档,而GitHub风格非常好。试试吧。它是用Node.js编写的。

gfm


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执行它。请注意,这在没有消毒的情况下用于生产是不安全的。


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

它不处理GitHub扩展,但总比没有好。我相信你可以扩展模块来处理GitHub的添加。


23
投票

可能不是你想要的,但是既然你提到了Node.js:我找不到一个很好的工具来在我的本地驱动器上预览GitHub Flavored Markdown文档,然后再将它们提交给GitHub,所以今天我创建了一个基于Node.js的文件:https://github.com/ypocat/gfms

因此,如果您的问题仍然存在,也许您可​​以重新使用它的showdown.js。如果没有,也许其他遇到同样问题的人会发现(就像我一样)这个问题及其答案。


17
投票

要读取终端中的README.md文件,我使用:

pandoc README.md | lynx -stdin

Pandoc以HTML格式输出,Lynx在您的终端中呈现。

它工作得很好:它填满我的终端,快捷方式如下所示,我可以滚动浏览,链接工作!虽然只有一种字体大小,但颜色+缩进+对齐弥补了这一点。

安装:

sudo apt-get install pandoc lynx

16
投票

GitHub有你可以使用的a Markdown API


13
投票

使用marked。它支持GitHub Flavored Markdown,可以用作Node.js模块并从命令行使用。

一个例子是:

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

10
投票

这主要是@ barry-staes使用Pandoc的答案的后续内容。如果你在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集成

您可以随时将当前选择或当前文档传递给上述之一,因为大多数编辑器都允许您这样做。您还可以轻松配置环境,以便pandoc替换Markdown软件包使用的默认Markdown处理器。

首先,创建一个包含以下内容的shell脚本(我将其命名为ghmarkdown):

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

然后,您可以将TM_MARKDOWN变量(在Preferences→Variables中)设置为/path/to/ghmarkdown,它将替换默认的Markdown处理器。

© www.soinside.com 2019 - 2024. All rights reserved.