我想知道是否有一个命令行实用程序可以将GitHub风味Markdown文件并将其呈现为HTML。
我正在使用GitHub维基创建网站内容。我已经在服务器上克隆了存储库,然后想把它处理成常规HTML。对我来说,重要的是,在GitHub上出现的内容正是我的网站应该如何寻找的。我也非常喜欢使用带~~~的围栏块,所以我宁愿不使用标准Markdown语法。
我已经看了一下JavaScript的实时预览,我想我可以把它挂钩到Node.js,但他们说它已经被弃用了。我已经查看了红地毯存储库,但它看起来不像有命令行界面。
我选择了自己的解决方案,但是,由于这里没有一个解决方案明显比其他解决方案更好,所以我将不选择答案。
我还没有找到一个快速和简单的方法,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 $@
也许这可能会有所帮助:
gem install github-markdown
没有文档,但我从咕噜的文档里找到的。查看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路径/ /我/减价/ file.md。注意,在没有消毒的生产中使用是不安全的。
我用Python写了一个小的CLI,并添加了GFM支持。它叫做Grip (Github Readme即时预览)。
安装方法:
$ pip install grip
要使用它,简单地说:
$ grip
然后访问localhost:5000查看自述文件。Md文件在那个位置。
你也可以指定你自己的文件:
$ grip CHANGES.md
并更改端口:
$ grip 8080
当然,特别渲染github - flavour Markdown,可选的存储库上下文:
$ grip --gfm --context=username/repo issue.md
显著的特点:
渲染页面显示完全像在GitHub
Fenced块
Python API
在2.0中添加的链接文件(谢谢vladwing!)之间导航
导出到2.0中添加的单个文件(谢谢,iliggio!
新增:从stdin读取并导出到stdout
来看看。
根据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)
这主要是@barry- states对使用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处理器。
一种“快速和肮脏”的方法是使用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浏览维基。
注意,对wget的两次调用都是必需的。如果您只运行第二个,那么您将错过正确显示页面所需的一些依赖项。
为此,我设法使用了一行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,这似乎是失败的答案。
在这条评论的基础上,我写了一个一行程序,使用curl和jq来访问Github Markdown API。
将这个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
如果你需要一个纯终端解决方案,用lynx“$HTMLFILE”替换打开的“$HTMLFILE”。