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

McL*_*old 396 markdown command-line github github-flavored-markdown

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

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

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

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

Joe*_*Joe 436

我用Python编写了一个小CLI,并添加了GFM支持.它叫做Grip(Github Readme Instant Preview).

安装它:

$ pip install grip
Run Code Online (Sandbox Code Playgroud)

要使用它,只需:

$ grip
Run Code Online (Sandbox Code Playgroud)

然后访问localhost:5000以查看该readme.md位置的文件.

您还可以指定自己的文件:

$ grip CHANGES.md
Run Code Online (Sandbox Code Playgroud)

并改变端口:

$ grip 8080
Run Code Online (Sandbox Code Playgroud)

当然,具体来说,可以使用存储库上下文来呈现GitHub-Flavored Markdown:

$ grip --gfm --context=username/repo issue.md
Run Code Online (Sandbox Code Playgroud)

显着特点:

  • 呈现页面与GitHub完全相同
  • 围栏块
  • Python API
  • 在2.0中添加链接文件(谢谢,vladwing!)之间的导航
  • 导出到单个文件(谢谢,iliggio!)在2.0中添加
  • 新增内容:读取stdin并导出到stdout 3.0中添加

希望这能帮到这里的人.看看吧.

  • 这应该是"github markdown预览"的第一击.其他一切都很复杂,不起作用,或者没有完成所有GitHub功能.`grip`开箱即用. (28认同)
  • 正如前面提到的,我不认为这是一个特别好的解决方案,因为所有这一切都归结为Github并让Github渲染你的Markdown.它需要一个可以访问Github的工作互联网连接,如果Github死了,那么这个工具就会停止工作.我宁愿有一个完全离线的解决方案. (9认同)
  • 应该注意的是,如果每小时刷新超过60次,则此程序包需要有效的Internet连接和github身份验证凭据(在命令行中提供). (3认同)

Ali*_*man 113

我没有找到一种快速简便的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 $@
Run Code Online (Sandbox Code Playgroud)

  • 我一直在使用"手表pandoc ..."来持续将markdown文件转换为html,并使用chrome"live reload"扩展来实时"停留在我滚动的位置"这个功能,并且效果很好.https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei?utm_source=gmail (4认同)
  • Pandoc 可以很好地读取 GFM,但它不会生成与 GitHub 相同的 HTML——例如,如果您的 GFM 源中有一个多行的 `&lt;pre/&gt;` 标签,Pandoc 会将 `&lt;br/&gt;` 标签放入对于其中的换行符,而 GitHub 的渲染器虽然去除了前导空格,但似乎不理会内容。 (2认同)
  • “gfm”和“markdown_github”输入格式都不能正确渲染代码块等内容。 (2认同)

Jam*_*Lim 29

也许这可能有所帮助:

gem install github-markdown
Run Code Online (Sandbox Code Playgroud)

没有文档,但我从gollum文档中得到了它.看看rubydoc.info,看起来你可以使用:

require 'github/markdown'  
puts GitHub::Markdown.render_gfm('your markdown string')
Run Code Online (Sandbox Code Playgroud)

在您的Ruby代码中.您可以轻松地将其包装在脚本中,以将其转换为命令行实用程序:

#!/usr/bin/env ruby

# render.rb
require 'github/markdown'

puts GitHub::Markdown.render_gfm File.read(ARGV[0])
Run Code Online (Sandbox Code Playgroud)

执行它./render.rb path/to/my/markdown/file.md.请注意,这在没有消毒的情况下用于生产是不安全的.


Gri*_*ave 28

pip3 install --user markdown
python3 -m markdown readme.md > readme.html
Run Code Online (Sandbox Code Playgroud)

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

  • 简单的HTML输出,没有花哨的标签. (2认同)

you*_*ayy 23

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

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


Bar*_*aes 18

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

pandoc README.md | lynx -stdin
Run Code Online (Sandbox Code Playgroud)

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

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

安装:

sudo apt-get install pandoc lynx
Run Code Online (Sandbox Code Playgroud)


keh*_*ers 17

GitHub有一个你可以使用的Markdown API.

  • `jq --slurp --raw-input '{"text": "\(.)", "mode": "markdown"}' &lt; README.md | curl --data @- https://api.github.com/markdown &gt; README.html` (5认同)

zem*_*rco 13

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

一个例子是:

$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>
Run Code Online (Sandbox Code Playgroud)

  • 我注意到这不支持代码块的语法突出显示等功能和清单等更新功能。但是,嘿它得到了大部分的方式! (2认同)

Cor*_*ton 10

这主要是@ barry-staes使用Pandoc的答案的后续内容.如果你在Mac上,Homebrew也有它:

brew install pandoc
Run Code Online (Sandbox Code Playgroud)

Pandoc通过markdown_github名称支持GFM作为输入格式.

输出到文件

cat foo.md | pandoc -f markdown_github > foo.html
Run Code Online (Sandbox Code Playgroud)

Lynx开放

cat foo.md | pandoc -f markdown_github | lynx -stdin # To open in Lynx
Run Code Online (Sandbox Code Playgroud)

在OS X上的默认浏览器中打开

cat foo.md | pandoc -f markdown_github > foo.html && open foo.html # To open in the default browser on OS X`
Run Code Online (Sandbox Code Playgroud)

TextMate集成

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

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

#!/bin/bash
# Note included, optional --email-obfuscation arg
pandoc -f markdown_github --email-obfuscation=references
Run Code Online (Sandbox Code Playgroud)

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


Yos*_*yts 10

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

VMD


bin*_*son 7

pandocbrowser适合我的作品.

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

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

  • $ brew install pandoc

  • $ brew install browser

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

  • @DominikGeorge没有apt-get on macOS. (10认同)

not*_*ter 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"
}
Run Code Online (Sandbox Code Playgroud)

然后在浏览器中查看渲染的 HTML 运行:

mdsee readme.md
Run Code Online (Sandbox Code Playgroud)

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


Asm*_*ust 6

我使用 Pandoc 和--from=gfmGitHub Flavored Markdown选项,如下所示:

$ pandoc my_file.md   --from=gfm -t html -o my_file.html
Run Code Online (Sandbox Code Playgroud)


Laz*_*ger 5

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


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

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

  • 那么如何在命令行上使用它呢? (2认同)