我想知道是否有一个命令行实用程序来获取GitHub flavored Markdown文件并将其呈现为HTML。
我正在使用GitHub wiki来创建网站内容。我已经在我的服务器上克隆了存储库,然后将其处理为常规HTML。对我来说很重要的是,GitHub上出现的内容正是它应该如何寻找我的网站。我也非常喜欢使用带~~~
的隔离块,所以我宁愿不使用标准的Markdown语法。
我已经看了一下JavaScript实时预览,认为我可以将它挂钩到Node.js,但是他们说它已被弃用了。我查看了redcarpet存储库,但看起来它没有命令行界面。
然而,我推出了自己的解决方案,因为这里没有解决方案明显优于其他解决方案,我会在没有选定答案的情况下提出问题。
答案 0 :(得分:423)
我在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
显着特征:
stdin
读取并导出到3.0中添加的stdout
希望这有助于此人。 Check it out
答案 1 :(得分:110)
我没有找到一种快速简便的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 $@
答案 2 :(得分: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
执行此操作。请注意,如果没有消毒,这对于生产使用是不安全的。
答案 3 :(得分:28)
pip3 install --user markdown
python3 -m markdown readme.md > readme.html
它不处理GitHub扩展,但总比没有好。我相信你可以扩展模块来处理GitHub的添加。
答案 4 :(得分:23)
可能不是你想要的,但是既然你提到了Node.js:在将它们提交给GitHub之前,我找不到在我的本地驱动器上预览GitHub Flavored Markdown文档的好工具,所以今天我创建了一个基于Node的文档。 js:https://github.com/ypocat/gfms
所以,如果您的问题仍然存在,也许您可以重复使用它的showdown.js。如果没有,也许其他遇到同样问题的人会发现(就像我一样)这个问题及其答案。
答案 5 :(得分:16)
GitHub有a Markdown API你可以使用。
答案 6 :(得分:15)
要读取终端中的README.md文件,我使用:
pandoc README.md | lynx -stdin
Pandoc以HTML格式输出,Lynx在您的终端中呈现。
效果很好:它填满我的终端,快捷方式如下所示,我可以滚动浏览,和链接有效! 虽然只有一种字体大小,但颜色+缩进+对齐弥补了这一点。
<强>安装:强>
sudo apt-get install pandoc lynx
答案 7 :(得分:13)
使用marked。它支持GitHub Flavored Markdown,可以用作Node.js模块和命令行。
一个例子是:
$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>
答案 8 :(得分:9)
我创建了一个类似于Atom预览功能的工具,但它是一个独立的应用程序。不确定这是否是您正在寻找的,但它可能会有所帮助。 - https://github.com/yoshuawuyts/vmd
答案 9 :(得分:7)
pandoc
的{p> browser
对我很有用。
用法:cat README.md | pandoc -f markdown_github | browser
安装(假设您使用的是Mac OSX):
$ brew install pandoc
$ brew install browser
或者在Debian / Ubuntu上:apt-get install pandoc browser
答案 10 :(得分:5)
另见https://softwareengineering.stackexchange.com/a/128721/24257。
如果您对我们[Github]渲染Markdown文件的方式感兴趣,您可能需要查看Redcarpet,即我们与Sundown库的Ruby接口。
使用Redcarpet的Ruby脚本将是“命令行实用程序”,如果你有本地Ruby
答案 11 :(得分:3)
我的最终解决方案是使用Python Markdown。我翻了my own extension修复了围栏块。
答案 12 :(得分:3)
在this comment的基础上,我编写了一个单行代码,以使用No
和curl
击中Github Markdown API。
将此bash函数粘贴到命令行或jq
上:
~/.bash_profile
然后查看渲染的HTML浏览器内运行:
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"
}
如果您需要纯终端解决方案,请用mdsee readme.md
替换open "$HTMLFILE"
。
答案 13 :(得分:3)
GitHub开发了一个很好的模块化文本编辑器Atom(基于Chromium,并使用Node.js模块作为包)。
默认的预装软件包Markdown Preview可让您使用 Ctrl + Shift + M 在单独的标签页中显示预览。< / p>
我没有测试它的完整语法,但由于它来自GitHub,如果预览的语法与他们的语法不同(使用~~~
工作的隔离块),我会非常惊讶。
现在,虽然它在技术上不是基于命令行的,但它使用Node.js并输出到基于DOM的渲染器,这可能有助于任何人尝试在Node.js上渲染基于GitHub语法的HTML。基于网络服务器,或者只是离线编辑她/他的README.md。
答案 14 :(得分:3)
有一个非常好用且简单的浏览GFM Markdown文档的工具:
GFMS - Github Flavored Markdown Server
它简单轻便(无需配置)HTTP服务器可以在包含markdown文件的任何目录中启动以浏览它们。
特点:
答案 15 :(得分:2)
改进@ barry-stae的解决方案。将此片段粘贴到〜/ .bashrc
中/"cmc[^,]*,
然后我们可以从命令行快速查看该文件。也适用于SSH / Telnet会话。
function mdviewer(){
pandoc $* | lynx -stdin
}
答案 16 :(得分:2)
延迟添加,但showdownjs有一个CLI工具,可用于将MD解析为HTML。
答案 17 :(得分: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-flavor Markdown,这对你的回答似乎没有帮助。
答案 18 :(得分:1)
我使用Pandoc和GitHub Flavored Markdown选项--from=gfm
,如下所示:
$ pandoc my_file.md --from=gfm -t html -o my_file.html
答案 19 :(得分:1)
我找到了一个可以为您执行此操作的网站:http://tmpvar.com/markdown.html。粘贴在Markdown中,它会为您显示。它似乎工作得很好!
但是,它似乎没有处理代码的语法高亮选项;也就是说,~~~ruby
功能不起作用。它只是打印'红宝石'。
答案 20 :(得分:0)
基于Jim Lim's answer,我安装了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)
答案 21 :(得分:0)
A&#39;快速而肮脏的&#39;方法是使用wget
实用程序下载Wiki页面,而不是克隆它。例如,这就是我从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
浏览维基。
请注意,必须同时调用wget
。如果您只运行第二个,那么您将错过正确显示页面所需的一些依赖项。
答案 22 :(得分:0)
改进@ barry-stae和@Sandeep对常规elink用户的答案,你可以将以下内容添加到.bashrc:
function mdviewer() {
pandoc $* | elinks --force-html
}
不要忘记安装pandoc(和elinks)。
答案 23 :(得分:0)
另一个选项是 AllMark - 降价服务器。
Docker 映像可用于即用型设置。
$ allmark serve .
注意:它递归地扫描目录以从降价文件中提供网站服务。因此,为了更快地处理单个文件,请将其移至单独的目录。
答案 24 :(得分:-1)
我最近做了你想要的,因为我需要从Markdown文件生成文档,而GitHub风格非常好。试试吧。它是用Node.js编写的。