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
입력 형식 gfm과 markdown_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.