首页 文章

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

提问于
浏览
371

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

我'm using a GitHub wiki to create website content. I'已经克隆了我的服务器上的存储库,然后将其处理为常规HTML . 它's important to me that what appears on GitHub is exactly how it should look for my website. I' d也非常喜欢使用带有 ~~~ 的隔离块,所以我宁愿不使用标准的Markdown语法 .

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

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

24 回答

  • 5

    我用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
    

    显着特点:

    • 渲染页面与GitHub上的内容完全相同

    • 围栏块

    • Python API

    • 在2.0中添加的链接文件之间导航(谢谢,vladwing!)

    • 导出到2.0中添加的单个文件(谢谢,iliggio!)

    • New:stdin 读取并导出到3.0中添加的 stdout

    希望这能帮到这里的人 . Check it out .

  • 0

    我没有找到一个快速简单的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

    也许这可能有所帮助:

    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 执行它 . 请注意,如果没有消毒,这对于 生产环境 使用是不安全的 .

  • 2
    pip3 install --user markdown
    python3 -m markdown readme.md > readme.html
    

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

  • 23

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

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

  • 27

    GitHub你可以使用a Markdown API .

  • 106

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

    pandoc README.md | lynx -stdin
    

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

    它工作得很好:它填充我的终端,快捷方式显示在下面,我可以滚动, and the links work! 虽然只有一种字体大小,但颜色缩进对齐弥补了这一点 .

    Installation:

    sudo apt-get install pandoc lynx
    
  • 9

    使用marked . 它支持GitHub Flavored Markdown,可以用作Node.js模块和命令行 .

    一个例子是:

    $ marked -o hello.html
    hello world
    ^D
    $ cat hello.html
    <p>hello world</p>
    
  • 29

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

    brew install pandoc
    

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

    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

    您可以随时将当前选择或当前文档传递给上述之一,因为大多数编辑器都允许您这样做 . 您还可以轻松配置环境,以便 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处理器 .

  • 0

    我创建了一个类似于Atom 's Preview functionality, but as a standalone application. Not sure if this is what you'的工具,但它可能会有所帮助 . - https://github.com/yoshuawuyts/vmd

    vmd

  • 405

    pandocbrowser 对我来说效果很好 .

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

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

    • $ brew install pandoc

    • $ brew install browser

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

  • 15

    另见https://softwareengineering.stackexchange.com/a/128721/24257 .


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

    使用Redcarpet的Ruby脚本将是"command line utility",如果你有本地Ruby的话

  • 15

    我的最终解决方案是使用Python Markdown . 我滚动my own extension修复了栅栏块 .

  • 13

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

    GFMS - Github Flavored Markdown Server

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

    特征:

    • 完整的GFM Markdown支持

    • 源代码语法高亮显示

    • 浏览文件和目录

    • 好看的输出(和可配置的CSS样式表)

    • 导出为PDF

  • 10

    GitHub已经(自)开发了一个很好的模块化文本编辑器,名为Atom(基于Chromium,并使用Node.js模块作为包) .

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

    我没有't tested its full syntax, but since it'来自GitHub,我'd be highly surprised if the preview'的语法与他们的不同(使用 ~~~ 工作的围栏块) .

    现在,虽然这不是技术上基于命令行的,它使用的Node.js并输出到DOM基于渲染器,这可能会帮助任何人试图呈现一个基于Node.js的功能的Web服务器GitHub的基于语法的HTML,或者只是修改了她/他的README.md离线 .

  • 3

    改进@ barry-stae的解决方案 . 将此片段粘贴到〜/ .bashrc中

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

    然后我们可以从命令行快速查看该文件 . 也适用于SSH / Telnet会话 .

    mdviewer README.md
    
  • 3

    延迟添加,但showdownjs有一个CLI工具,可用于将MD解析为HTML .

  • 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没有帮助,这似乎在这个答案上失败了 .

  • 1

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

    但是,它似乎没有处理代码的语法高亮选项;也就是说, ~~~ruby 功能没有't work. It just prints ' ruby' .

  • 0

    改进@ barry-stae和@Sandeep为常规elink用户提供的答案,你可以将以下内容添加到.bashrc:

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

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

  • -1

    基于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)
    
  • 2

    'quick-and-dirty'方法是使用 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 来立即浏览维基 .

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

  • 0

    我使用Pandoc和 --from=gfm 选项这样:

    $ pandoc markdown-sample.md   --from=gfm -t html -o markdown-sample.html
    
  • 7

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

    gfm

相关问题