是否有一个命令行实用工具可以渲染GitHub风格的Markdown?

456

我想知道是否有一个命令行实用程序可以将GitHub flavored Markdown文件渲染为HTML。

我正在使用GitHub wiki创建网站内容。 我已经在我的服务器上克隆了存储库,然后想将其处理为常规HTML。 对我来说,重要的是在GitHub上显示的内容与我的网站上的内容完全一样。 我也非常想使用带有~~~的围栏块,因此我不想仅使用标准Markdown语法。

我研究了一下JavaScript实时预览,以为可以将其连接到Node.js,但他们说它已被弃用。 我看了一下redcarpet存储库,但它似乎没有命令行界面。

我自己开发了一个解决方案,但由于这里没有明显优于其他解决方案的解决方案,所以我会将问题留在没有选定答案的状态。


2
回复:更新:如果我给grip添加一个“--out”参数,以便将渲染输出到HTML文件而不是浏览器,这样是否可以接受? - Joe
1
@McLeopold @bguiz 刚刚部署了 --export 选项,它将 GFM 及其样式渲染为单个文件。这回答了你的问题吗? - Joe
@Joe,好的,我会去看看! - bguiz
3
@McLeopold,Joe通过创建一个简单可重用的解决方案成功地完成了这项工作,你可能想要接受他的答案。 - James McMahon
1
Github本身使用Sundown。请参见https://dev59.com/D2sz5IYBdhLWcg3wuKe7#7694931。 - Pacerier
显示剩余6条评论
26个回答

1
一个“快速而肮脏”的方法是使用wget工具下载维基HTML页面,而不是克隆它。例如,这是我如何从GitHub下载Hystrix维基的方式(我正在使用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

第一次调用将下载维基词条页面及其所有依赖项。第二个调用将调用其中的所有子页面。现在,您可以通过打开Netflix/Hystrix/wiki.1.html来浏览维基百科。
请注意,两个wget调用都是必需的。如果您只运行第二个调用,则会错过一些显示页面所需的依赖项。

0

对于经常使用elinks的普通用户,可以在.bashrc中添加以下内容以改进@barry-stae和@Sandeep的答案:

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

别忘了安装 pandoc(和 elinks)。


0

根据Jim Lim的回答,我安装了GitHub Markdown gem。这包括一个名为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)

1
我尝试在Ruby和Cucumber中使用围栏块。虽然围栏(ruby,cucumber等)被识别为围栏(因为它们以固定宽度文本呈现),但没有语法高亮。有什么想法吗? - Keith Bennett

0

另一个选择是AllMark - Markdown服务器
Docker镜像可用于快速设置。

$ allmark serve .

注意:它会递归扫描目录以从Markdown文件提供网站服务。因此,为了更快地处理单个文件,请将其移动到单独的目录中。


0
我找到了一个可以帮你完成这个任务的网站:http://tmpvar.com/markdown.html。将你的Markdown粘贴进去,它就会为你显示出来。看起来它运作得非常好!
不过,它似乎不能处理代码的语法高亮选项;也就是说,~~~ruby 这个功能不能用。它只会打印出“ruby”。

tmpvar似乎没有执行GFM版本的增强功能,如表格。 - Greg

-1

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

gfm


我知道这个模块已经9个月没有更新了,你为什么要踩一个旧帖子呢? - Gabriel Llamas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接