GitHub 플레이 버드 마크 다운을 렌더링하기위한 명령 줄 유틸리티가 있습니까?


414

GitHub 플레이 버드 마크 다운 파일 을 가져 와서 HTML로 렌더링하기 위한 명령 줄 유틸리티가 있는지 궁금합니다 .

웹 사이트 콘텐츠를 만들기 위해 GitHub 위키를 사용하고 있습니다. 서버에서 리포지토리를 복제 한 다음 일반 HTML로 처리하려고합니다. GitHub에 나타나는 것은 내 웹 사이트를 찾는 방법과 정확히 일치하는 것이 중요합니다. 또한와 함께 분리 된 블록을 사용하고 ~~~싶습니다. 따라서 표준 Markdown 구문 만 사용하고 싶지 않습니다.

Node.js에 연결할 수 있다고 생각하는 JavaScript 라이브 미리보기를 조금 보았지만 더 이상 사용되지 않는다고 말합니다. 레드 카펫 저장소를 살펴 봤지만 명령 행 인터페이스가있는 것처럼 보이지 않습니다.

그러나 내 솔루션을 롤백했지만 여기에 다른 솔루션보다 분명히 좋은 솔루션은 없으므로 선택한 답변없이 질문을 남길 것입니다.


2
RE : 업데이트 : --out브라우저 대신 HTML 파일로 렌더링하기 위해 인수를 추가하면 괜찮습니까?
Joe

@ 조 그 옵션을 추가하십시오!
bguiz

@McLeopold @bguiz는 --exportGFM 및 해당 스타일을 단일 파일로 렌더링 하는 옵션을 방금 배포했습니다 . 이 질문에 대답합니까?
Joe

3
@McLeopold, Joe는 간단한 재사용 가능한 솔루션을 만들어 공원에서이 문제를 해결했습니다.
James McMahon

1
Github 자체는 Sundown을 사용합니다 . 참조 stackoverflow.com/a/7694931/632951
Pacerier

답변:


447

파이썬으로 작은 CLI를 작성하고 GFM 지원을 추가했습니다. 그것은라고 그립 (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에서와 같이 정확하게 렌더링합니다
  • 울타리 블록
  • 파이썬 API
  • 링크 된 파일 사이를 탐색하십시오 (감사합니다, vladwing !)2.0에 추가 된
  • 2.0에 추가 된 단일 파일 (감사, iliggio !)로 내보내기
  • 신규 : 3.0 에서 읽기 stdin및 내보내기stdout

이것이 누군가를 돕기를 바랍니다. 확인하십시오 .


1
정말 잘 작동하며 Pythonistas의 설치 용이성을 이길 수 없습니다!
RichVel

29
이것은 "github markdown preview"의 첫 번째 히트작입니다. 다른 모든 것은 복잡하거나 작동하지 않거나 모든 GitHub 기능을 수행하지 않습니다. grip상자에서 바로 작동합니다.
Bluu

1
@Houdini 문제가 오래되었습니다. 플라스크는 3.3을 지원 합니다. flask.pocoo.org/docs/python3 참조하십시오 . 다음은 github.com/mitsuhiko/flask/issues/587 주제에 대한 최신 Github 스레드입니다 . 업데이트가 필요한 다른 종속성이 있으면 언제든지 문제 또는 풀 요청을여십시오.
Joe

3
시간당 60 회 이상 새로 고침을 수행하는 경우이 패키지에는 활성 인터넷 연결과 github 인증 자격 증명 (명령 줄에서 제공)이 필요합니다.
leo

13
앞에서 언급했듯이, 이것이 Github로 이동하여 Github이 Markdown을 렌더링하도록하기 때문에 이것이 특히 훌륭한 해결책이라고 생각하지 않습니다. Github에 액세스 할 수있는 인터넷 연결이 필요하며 Github가 죽으면이 도구의 작동이 중지됩니다. 차라리 완전히 오프라인 솔루션을 원합니다.
Jez

114

나는 GitHub 맛 Markdown에 대한 빠르고 쉬운 방법을 찾지 못했지만 약간 더 일반적인 버전을 찾았습니다 -Pandoc . Markdown, Rest, HTML 등을 포함하여 여러 형식으로 변환합니다.

또한 Makefile모든 .md 파일을 .html로 변환하기 위해 ( 개발 , 마크 다운 및 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 $@

4
나는 "watch pandoc ..."을 사용하여 마크 다운 파일을 html로 지속적으로 변환하고 크롬 "live reload"확장 프로그램을 사용하여 실시간으로 "스크롤 된 위치를 유지하십시오"기능을 사용하여 훌륭하게 작동합니다. . chrome.google.com/webstore/detail/livereload/…
Brad Parks

1
Pandoc은 GFM을 잘 읽지 만 GitHub과 동일한 HTML을 생성하지 않습니다. 예를 들어 <pre/>GFM 소스에 여러 줄 태그가있는 경우 Pandoc은 <br/>줄 바꿈에 태그를 넣지 만 GitHub의 렌더러는 공백을 제거하고 그렇지 않으면 내용을 그대로 두는 것처럼 보입니다.
데이비드 몰스

1
결과 HTML에서 멋진 스타일을 얻는 방법은 무엇입니까? 예를 들어 내 출력은 여전히 ​​Times New Roman으로 렌더링됩니다.
전체적 개발자

Pandoc 설치 지침은 여기에 있습니다 . macOS :brew install pandoc
오리의 주인

1
입력 형식 gfmmarkdown_github입력 형식 모두 코드 블록과 같은 것을 올바르게 렌더링 하지 않습니다 .
user5359531

29

아마도 이것이 도움이 될 수 있습니다.

gem install github-markdown

문서가 없지만 골룸 에서 얻었습니다. 문서 . 보면 rubydoc.info 사용할 수있는 것처럼, 그것은 본다 :

require 'github/markdown'  
puts GitHub::Markdown.render_gfm('your markdown string')

루비 코드에서. 스크립트로 쉽게 감싸서 명령 줄 유틸리티로 만들 수 있습니다.

#!/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. 이것은 소독없이 생산에 사용하기에 안전하지 않습니다.


1
감사합니다 Jim, 존재하지 않는 예제로 인해 요구 단계에 갇혀 있습니다 (슬래시로 대시를 바
꾸었

이미 NPM을 사용하고 있다면 좋습니다. DOxygen 때문에 특히 github 맛 markdown + HTML로 내보내기와 관련하여 지속적인 문제가 발생했습니다.
kayleeFrye_onDeck

로컬로 실행 중입니까, 아니면 GitHub API로 데이터를 전송합니까?
user5359531 2009 년

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

GitHub 확장을 처리하지 않지만 아무것도 아닌 것보다 낫습니다. GitHub 추가를 처리하기 위해 모듈을 확장 할 수 있다고 생각합니다.


1
/ usr / bin / python : markdown은 패키지이며 직접 실행할 수 없습니다
Kazimieras Aliulis

2
멋진 태그가없는 간단한 HTML 출력.
Halil Kaskavalci

23

아마 당신이 원하는 것은 아니지만 Node.js를 언급 한 이후 : GitHub에 커밋하기 전에 로컬 드라이브에서 GitHub Flavored Markdown 설명서를 미리 볼 수있는 좋은 도구를 찾을 수 없었으므로 오늘 Node.js를 기반으로 문서를 만들었습니다. HTTPS : //github.com/ypocat/gfms

따라서 귀하의 질문이 여전히 실제 인 경우 showdown.js를 위키에 재사용 할 수 있습니다. 그렇지 않다면 아마도 내가했던 것과 같은 문제에 직면 한 다른 사람들 이이 질문과 그 대답을 찾을 수 있습니다.


잘 했어. 노드 응용 프로그램을 작성할 때 Ruby 또는 Python에 의존하지 않아도됩니다.
jedd.ahyoung

19

터미널에서 README.md 파일을 읽으려면 다음을 사용하십시오.

pandoc README.md | lynx -stdin

Pandoc은이를 Lynx가 터미널에서 렌더링하는 HTML 형식으로 출력합니다.

그것은 잘 작동합니다 : 터미널을 채우고 바로 가기가 아래에 표시되어 있으며 스크롤 할 수 있으며 링크가 작동합니다! 글꼴 크기는 하나 뿐이지 만 색상 + 들여 쓰기 + 정렬이 그에 맞게 구성됩니다.

설치:

sudo apt-get install pandoc lynx

1
질문은 특히 명령 줄 사용법에 관한 것입니다. 자신의 루비 스크립트 (또는 egad 노드 서버)를 작성하기 전에이 기회를주십시오.
Cora Middleton

정확하게 이것은 터미널 내부에서 작동합니다. 또는 즐겨 사용하는 (데스크톱?) 브라우저가 해당 폴더 사용에 액세스 pandoc readme.md -o readme.md.html하여 결과 파일을 열 수있는 경우.
Barry Staes

@ baerry-staes 예, 죄송합니다. 귀하의 답변이 본인이 가장 선호하는 답변이 되었기를 바랍니다.
Cora Middleton

@JustinMiddleton 네, 알겠습니다. 감사합니다. 내 의견은 데스크톱 사용자를위한 추가 정보를 추가하는 것이 었습니다. 누군가 언젠가 이것을 읽는 것이 유용하다고 생각했습니다.
Barry Staes

1
나는 5-6 개의 다른 콘솔 md 리더를 시도했지만 이것이 최고의 솔루션이었습니다. 조금 더 빨리 사용할 수 있도록 구성에 가장 기본적인 기능을 추가했습니다. function md { pandoc $@ | lynx -stdin }
러스 브라운

17

GitHub에는 사용할 수 있는 Markdown API 가 있습니다.


5
jq --slurp --raw-input '{"text": "\(.)", "mode": "markdown"}' < README.md | curl --data @- https://api.github.com/markdown > README.html
Vebjorn Ljosa

@VebjornLjosa * 그 * 또는 grip... 당신이 선택한. : P
yyny

13

표시된 사용 . GitHub Flavored Markdown을 지원하며 Node.js 모듈 및 명령 줄에서 사용할 수 있습니다.

예를 들면 다음과 같습니다.

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

1
이 기능은 코드 블록의 구문 강조 표시와 같은 기능과 검사 목록과 같은 최신 기능을 지원하지 않습니다. 그러나 그것은 대부분의 길을 얻는다!
bguiz

아주 좋은 점은 누락 된 것은 테이블의 테두리입니다. 글쎄, 적어도 나는 그것들을 전혀 렌더링 할 수 없다. 이것은 내가 필요로하는 것과 거의 똑같다. GFM에서 파이프, HTML에서 파이프 아웃 :)
Xandaros

이 예제에 대해 혼란 스럽습니다. 무엇 ^D입니까?
매튜

10

이것은 Pandoc 사용에 대한 @ barry-staes의 답변에 대한 후속 조치 입니다. 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 통합

대부분의 편집자들이 허용하는 것처럼 항상 현재 선택 물 또는 현재 문서를 위의 문서 중 하나로 파이프 할 수 있습니다. Markdown 번들에 pandoc사용되는 기본 Markdown 프로세서 를 대체 하도록 환경을 쉽게 구성 할 수도 있습니다 .

먼저, 다음 내용으로 쉘 스크립트를 작성하십시오 (이것을 호출하겠습니다 ghmarkdown).

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

그런 다음 TM_MARKDOWN변수 (기본 설정 → 변수)를로 설정 /path/to/ghmarkdown하면 기본 마크 다운 프로세서가 대체됩니다.


10

Atom의 미리보기 기능과 유사한 도구를 독립형 응용 프로그램으로 만들었습니다. 이것이 당신이 찾고있는 것인지 확실하지 않지만 도움이 될 수 있습니다. -https : //github.com/yoshuawuyts/vmd

vmd


아직도 이걸지지 해? 오늘 NPM으로 설치하려고했지만 주사위는 없습니다. > 전자
-v0.36.9-win32-x64.zip

1
그래, 우리는! 어떤 버전의 npm / node를 실행 했습니까? -GH에 대한 문제를 자유롭게 열어주십시오. 우리는 이것을 살펴볼 것입니다. 감사!
Yoshua Wuyts

8

pandoc와 함께 browser잘 작동합니다.

용법: cat README.md | pandoc -f markdown_github | browser

설치 (Mac OSX를 사용한다고 가정) :

  • $ brew install pandoc

  • $ brew install browser

또는 데비안 / 우분투에서 : apt-get install pandoc browser


1
apt-get isntall pandoc양조와 같은 안전하지 않은 지역 물건을 사용할 필요가 없습니다.
Dominik George

1
@DominikGeorge 오타가, 그 것이다 설치 하지 isntall
페데리코 Tomassetti

11
@DominikGeorge macOS에는 적절한 기능이 없습니다.
richrad

6

https://softwareengineering.stackexchange.com/a/128721/24257 도 참조 하십시오 .


[Github] Markdown 파일을 렌더링하는 방법에 관심이 있으시면 Sundown 라이브러리에 대한 Ruby 인터페이스 인 Redcarpet 을 확인하십시오 .

Redcarpet 을 사용하는 Ruby 스크립트 는 로컬 Ruby가있는 경우 "명령 줄 유틸리티"가됩니다.


아이디어가 없습니다-저는 루비를 쓰지 않고 Redcarpet 소스를 읽지 않았습니다
Lazy Badger

@LazyBadger, Sundown 은 실제 파서입니다 (C로 작성). 레드 카펫은 필요하지 않습니다.
Pacerier

6

이 의견을 바탕으로 and를 사용하여 Github Markdown API 에 도달하는 하나의 라이너를 작성했습니다 .curljq

이 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"당신이 순수 터미널 솔루션이 필요합니다.


4

GitHub는 Atom (Chromium을 기반으로하며 Node.js를 사용하는) 이라는 멋진 모듈 식 텍스트 편집기를 개발했습니다. 하며 패키지에 모듈을 사용) .

사전 설치된 기본 패키지 Markdown Preview를 사용하면 Ctrl+ Shift+를 사용하여 미리보기를 별도의 탭에 표시 할 수 있습니다 M.

나는 전체 구문을 테스트하지는 않았지만 GitHub에서 왔기 때문에 미리보기의 구문이 구문과 다릅니다 ( ~~~작업을 사용하는 펜싱 블록 ).

이제는 기술적으로 명령 줄 기반이 아니지만 Node.js를 사용하여 DOM 기반 렌더러로 출력하여 Node.js 기반 웹 서버에서 GitHub 구문 기반 HTML을 렌더링하거나 편집하는 데 도움이 될 수 있습니다. / his README.md 오프라인.


1
Atom에서는 마크 다운 문서를 HTML 및 / 또는 PDF 문서로 내보내는 gfm-pdf ( atom.io/packages/gfm-pdf ) 라는 패키지를 설치할 수 있습니다 . wkhtmltopdf 라이브러리 가 필요합니다.
spren9er


3

GFM Markdown 문서를 탐색 할 수있는 정말 훌륭하고 간단한 도구가 있습니다.

GFMS-Github 플레이 버드 마크 다운 서버

마크 다운 파일이 포함 된 디렉토리에서 시작할 수있는 간단하고 가벼운 (구성이 필요하지 않음) HTTP 서버입니다.

풍모:

  • 완벽한 GFM 마크 다운 지원
  • 소스 코드 구문 강조
  • 파일 및 디렉토리 찾아보기
  • 멋진 결과물 (및 구성 가능한 CSS 스타일 시트)
  • PDF로 내보내기

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-flavor Markdown에는 도움이되지 않습니다.이 답변에서는 실패한 것 같습니다.


이 도구는 github에서 사용하는 도구이기 때문에 이것이 모든 소스에서 "가장 가까운"답변이라고 생각합니다.
memoselyk

3

다음과 같이 --from=gfmGitHub Flavored Markdown 옵션과 함께 Pandoc을 사용 합니다.

$ pandoc my_file.md   --from=gfm -t html -o my_file.html

Linux mint 18에서 pandoc 1.16.0.2를 사용하면 오류가 발생 pandoc: Unknown reader: gfm합니다. 2.2.1로 이동하면이 문제가 해결됩니다.
kidmose

Pandoc 2.1.2로 테스트했습니다.
Asme Just

우분투에 2.2.1을 설치하는 방법?
Alexander Mills

@AlexanderMills 시도 했습니까 sudo apt install pandoc?
Asme Just

2

@ barry-stae의 솔루션을 개선합니다. 이 스 니펫을 ~ / .bashrc에 붙이십시오.

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

그런 다음 명령 줄에서 파일을 빠르게 볼 수 있습니다. SSH / Telnet 세션에서도 잘 작동합니다.

mdviewer README.md

2

늦은 추가이지만 showdownjs 에는 MD를 HTML로 구문 분석하는 데 사용할 수있는 CLI 도구가 있습니다.


1

http://tmpvar.com/markdown.html 당신을 위해 이것을 할 웹 사이트를 찾았습니다 . 마크 다운에 붙여 넣으면 표시됩니다. 잘 작동하는 것 같습니다!

그러나 코드의 구문 강조 옵션을 처리하지 않는 것 같습니다. 즉, ~~~ruby기능이 작동하지 않습니다. 그냥 '루비'를 인쇄합니다.


tmpvar는 테이블과 같은 GFM 버전 향상을하지 않는 것 같습니다
Greg

0

elink의 일반 사용자에 대한 @ barry-stae 및 @Sandeep 답변을 개선하면 .bashrc에 다음을 추가합니다.

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

pandoc (및 elink)를 설치하는 것을 잊지 마십시오.


0

를 기반으로 짐 림의 대답 , 나는 GitHub의 마크 다운 보석을 설치했다. 여기에는 명령 행에서 파일 이름을 사용하고 동등한 HTML을 표준 출력에 쓰는 gfm이라는 스크립트가 포함되었습니다. 파일을 디스크에 저장하고 표준 브라우저를 실행으로 열도록 약간 수정했습니다.

#!/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)

1
루비와 오이를 위해 울타리 블록으로 시도했습니다. 울타리 ( ruby, 오이 등)가 울타리로 인식되는 것처럼 보이지만 (고정 너비 텍스트로 렌더링되기 때문에) 구문 강조 표시가 없습니다. 왜 그런지 알아?
Keith Bennett

0

'빠르고 더러운'접근 방식은 wget유틸리티를 사용하여 위키 HTML 페이지를 복제하는 대신 다운로드하는 것입니다. 예를 들어, 이것은 GitHub에서 Hystrix 위키를 다운로드 한 방법입니다 ( 우분투 리눅스를 사용하고 있습니다) :

 $ 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

첫 번째 호출은 위키 항목 페이지와 모든 종속 항목을 다운로드합니다. 두 번째는 모든 하위 페이지를 호출합니다. 당신은 지금 위키를 열 수 있습니다Netflix/Hystrix/wiki.1.html .

두 통화가 wget모두 필요합니다. 두 번째 것을 실행하면 페이지를 올바르게 표시하는 데 필요한 일부 종속성이 누락됩니다.


-1

Markdown 파일에서 문서를 생성해야하고 GitHub 스타일이 매우 좋기 때문에 최근에 원하는 것을 만들었습니다. 시도 해봐. Node.js로 작성되었습니다.

gfm


9 개월 후에 모듈이 업데이트되지 않은 이유는 무엇입니까?
가브리엘 라마
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.