440

我想知道是否有用于获取GitHub 风格的 Markdown文件并将其呈现为 HTML 的命令行实用程序。

我正在使用 GitHub wiki 来创建网站内容。我已经在我的服务器上克隆了存储库,然后想将它处理成常规的 HTML。对我来说重要的是,出现在 GitHub 上的内容正是它应该如何查找我的网站。我也真的很想将围栏块与 一起使用~~~,所以我宁愿不只使用标准的 Markdown 语法。

我查看了一些 JavaScript 实时预览,认为我可以将它连接到 Node.js,但他们说它已被弃用。我查看了 redcarpet 存储库,但它看起来没有命令行界面。

但是,我推出了自己的解决方案,因为这里没有任何解决方案明显比其他解决方案更好,所以我将在没有选择答案的情况下留下问题。

4

26 回答 26

471

我用 Python 编写了一个小型 CLI 并添加了 GFM 支持。它被称为Grip(Github 自述文件即时预览)

安装它:

$ 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和导出到stdout 3.0 中添加

希望这可以帮助这里的人。检查出来

于 2012-12-08T20:03:02.730 回答
118

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

我还开发了一个Makefile将所有 .md 文件转换为 .html 的方法(主要是在Writing、Markdown 和 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 $@
于 2011-11-08T12:19:16.877 回答
29

也许这可能会有所帮助:

gem install github-markdown

不存在任何文档,但我是从gollum文档中得到的。查看ruby​​doc.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。请注意,如果不进行消毒,这对于在生产中使用是不安全的。

于 2012-11-14T13:40:02.313 回答
29
pip3 install --user markdown
python3 -m markdown readme.md > readme.html

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

于 2012-08-20T21:07:29.520 回答
26

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

pandoc README.md | lynx -stdin

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

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

安装:

  • 易于:sudo apt-get install pandoc lynx
  • 尼克斯:nix-shell -p pandoc lynx
于 2014-12-16T11:29:53.437 回答
25

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

因此,如果您的问题仍然存在,也许您可​​以将其中的 showdown.js 重用于您的 Wiki。如果没有,也许其他面临与我相同问题的人会(就像我一样)找到这个问题和这个答案。

于 2012-01-29T08:31:58.057 回答
19

GitHub 有一个可以使用的 Markdown API 。

于 2014-06-23T02:21:50.377 回答
14

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

一个例子是:

$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>
于 2012-10-25T12:59:37.000 回答
12

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

虚拟机

于 2015-02-24T10:56:54.573 回答
10

This is mostly a follow-on to @barry-staes's answer for using Pandoc. Homebrew has it as well, if you're on a Mac:

brew install pandoc

Pandoc supports GFM as an input format via the markdown_github name.

Output to file

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

Open in Lynx

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

Open in the default browser on OS X

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

TextMate Integration

You can always pipe the current selection or current document to one of the above, as most editors allow you to do. You can also easily configure the environment so that pandoc replaces the default Markdown processor used by the Markdown bundle.

First, create a shell script with the following contents (I'll call it ghmarkdown):

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

You can then set the TM_MARKDOWN variable (in Preferences→Variables) to /path/to/ghmarkdown, and it will replace the default Markdown processor.

于 2015-01-12T18:48:08.280 回答
9

pandocbrowser我来说效果很好。

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

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

  • $ brew install pandoc

  • $ brew install browser

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

于 2016-08-23T19:06:58.057 回答
7

我将 Pandoc 与--from=gfmGitHub Flavored Markdown 的选项一起使用,如下所示:

$ pandoc my_file.md   --from=gfm -t html -o my_file.html
于 2018-04-13T21:12:10.560 回答
7

在此评论的基础上,我编写了一个单行代码来使用和访问Github Markdown APIcurljq

将此 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"

于 2019-01-02T21:38:48.807 回答
6

另请参阅https://softwareengineering.stackexchange.com/a/128721/24257


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

使用Redcarpet的 Ruby-script将是“命令行实用程序”,如果您有本地 Ruby

于 2011-10-08T05:04:05.040 回答
4

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

GFMS - Github 风格的 Markdown 服务器

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

特征:

  • 完整的 GFM Markdown 支持
  • 源代码语法高亮
  • 浏览文件和目录
  • 漂亮的输出(和可配置的 CSS 样式表)
  • 导出为 PDF
于 2014-06-20T14:38:35.077 回答
4

我的最终解决方案是使用Python Markdown。我滚动了我自己的 扩展来固定栅栏块。

于 2012-01-30T18:44:49.617 回答
4

GitHub(从那时起)开发了一个很好的模块化文本编辑器,称为Atom(基于 Chromium 并使用Node.js模块进行包)。

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

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

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

于 2014-07-31T02:09:47.173 回答
3

为此,我设法使用了一个单行 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 没有帮助,这似乎在这个答案上失败了。

于 2017-09-16T05:02:13.080 回答
3

后期添加,但showdownjs有一个 CLI 工具,可用于将 MD 解析为 HTML。

于 2016-12-30T19:31:35.070 回答
2

改进@barry-stae 的解决方案。将此代码段粘贴到 ~/.bashrc

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

然后我们可以从命令行快速查看文件。也可以通过 SSH/Telnet 会话很好地工作。

mdviewer README.md
于 2015-12-04T17:45:00.277 回答
1

我找到了一个可以为您执行此操作的网站:http: //tmpvar.com/markdown.html。粘贴到您的 Markdown 中,它会为您显示它。它似乎工作得很好!

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

于 2011-12-08T19:10:38.053 回答
1

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

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

于 2015-05-22T11:58:52.383 回答
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)
于 2013-10-15T16:03:55.080 回答
0

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

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

不要忘记安装 pandoc(和 elinks)。

于 2016-03-22T12:11:44.307 回答
0

另一个选择是AllMark -降价服务器
Docker 映像可用于即用型设置。

$ allmark serve .

注意:它递归地扫描目录以从降价文件服务网站。因此,为了更快地处理单个文件,请将其移至单独的目录。

于 2021-01-27T23:18:29.020 回答
-1

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

gfm

于 2013-02-10T15:42:20.777 回答