대결은 John Gruber의 원본 작품을 기반으로 HTML 변환기에 대한 JavaScript Markdown입니다. 대결은 클라이언트 측 (브라우저) 또는 서버 측 (node.js)를 사용할 수 있습니다.
여기에서 라이브 데모를 확인하십시오 : http://demo.showdownjs.com/
아시다시피, Showdownjs는 무료 도서관이며 영원히 무료로 유지됩니다. 그러나 도서관을 유지하고 개선하는 데는 시간과 비용이 필요합니다.
당신이 우리의 일을 좋아하고 우리의 도서관이 유용하다고 생각한다면, PayPal을 통해 기부하십시오! 귀하의 기여는 크게 감사 하고이 멋진 도서관을 계속 개발하는 데 도움이 될 것입니다.
Showdownjs v 2.0은 MIT 라이센스에 따라 릴리스됩니다. 이전 버전은 BSD에 따라 릴리스됩니다.
최신 릴리스 타르볼을 릴리스에서 직접 다운로드 할 수 있습니다.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Nuget 패키지는 여기에서 찾을 수 있습니다.
사용 가능한 여러 CDN 중 하나를 사용할 수도 있습니다.
JSDELIVR
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
cdnjs
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
unpkg
https://unpkg.com/showdown/dist/showdown.min.js
참고 : <version tag>
실제 전장 버전으로 바꾸십시오 1.9.0
대결은 다음과 같이 성공적으로 테스트되었습니다.
이론적으로 대결은 ECMA 262 3rd Edition (JavaScript 1.5)을 지원하는 모든 브라우저에서 작동합니다. 변환기 자체는 Acrobat과 같은 웹 브라우저가 아닌 것들에서도 작동 할 수도 있습니다. 약속이 없습니다.
대결은 지원되는 Node.js 버전에서 작동하기위한 것입니다 (Node.js 릴리스 일정 참조. 코드는 이전 버전의 node.js와 함께 작동 할 수 있지만이를 확인하기 위해 수용이 이루어지지 않습니다.
대결 v <1.0.0을 찾고 있다면 레거시 브랜치 에서 찾을 수 있습니다.
전체 변경 로그를 확인할 수 있습니다
Wiki 페이지에서 예제 및보다 심층적 인 문서를 확인하십시오.
var showdown = require ( 'showdown' ) ,
converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
var converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
두 예 모두 출력해야합니다 ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
옵션을 통해 대결의 기본 동작 중 일부를 변경할 수 있습니다.
옵션을 설정할 수 있습니다.
"글로벌"옵션을 설정하면 모든 대결 인스턴스에 영향을 미칩니다
showdown . setOption ( 'optionKey' , 'value' ) ;
"로컬"옵션 설정은 지정된 변환기 개체에만 영향을 미칩니다. 로컬 옵션을 설정할 수 있습니다.
생성자를 통해
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
setOption () 메소드를 통해
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
대결은 이전 세트 옵션을 검색하기위한 2 가지 방법 (로컬 및 글로벌)을 제공합니다.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
다음과 같이 대결의 기본 옵션을 얻을 수 있습니다.
var defaultOptions = showdown . getDefaultOptions ( ) ;
omitextrawlincodeblocks : (부울) [Default False] 코드 블록에서 후행 Newline을 생략합니다. 전:
이것:
< code > < pre > var foo = 'bar';
</ pre > </ code >
이것이된다 :
< code > < pre > var foo = 'bar'; </ pre > </ code >
NoHeaderId : (부울) [기본 거짓] 자동 생성 헤더 ID를 비활성화합니다. true로 설정하면 접두사를 재정의합니다
CustomizedHeaderID : (부울) [기본 거짓] 곱슬 브레이스의 텍스트를 헤더 ID로 사용합니다. (v1.7.0 이후) 예 :
## Sample header {real-id} will use real-id as id
ghcompatible HeaderId : (부울) [기본 거짓] GitHub 스타일과 호환되는 헤더 ID를 생성합니다 (공백은 대시로 대체되고 많은 비 영화 숯이 제거됨) (v1.5.5 이후)
PrefixHeaderID : (String/Boolean) [Default False] 생성 된 헤더 ID에 접두사를 추가합니다. 문자열을 전달하면 해당 문자열이 헤더 ID에 접두사를 만듭니다. true
로 설정하면 일반적인 '섹션'접두사가 추가됩니다.
rawPrefixHeaderID : (부울) [기본 거짓]이 옵션을 true로 설정하면 대집이 접두사 수정을 수정하는 것을 방지합니다. 이로 인해 기형 ID가 발생할 수 있습니다 (예 : "char가 접두사에서 사용되는 경우). PrefixHeaderid가 False로 설정된 경우에는 영향을 미치지 않습니다. (v 1.7.3 이후).
RawHeaderid : (부울) [기본 거짓] 공백 만 제거하고, "생성 된 헤더 ID (접두사 포함)에서 대시로 대시 (- ) 로 교체합니다.
HeaderLevelStart : (정수) [기본 1] 헤더 시작 레벨을 설정합니다. 예를 들어, 이것을 3으로 설정한다는 것은 그것을 의미합니다
# foo
다음과 같이 구문 분석됩니다
< h3 > foo </ h3 >
parseimgdimensions : (boolean) [default false] Markdown 구문 내에서 이미지 크기 설정을 지원할 수 있습니다. 예 :
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutolink : (부울) [기본 거짓]이 옵션을 켜면 자동 링크가 URL에 링크 될 수 있습니다. 이것은 다음을 의미합니다.
some text www.google.com
다음과 같이 구문 분석됩니다
< p > some text < a href =" www.google.com " > www.google.com </ a >
ExcludeRailingPunctuationFromUrls : (부울) [Default False]이 옵션은 자동 링크 URL에서 구두점을 제외합니다. 구두점 제외 : . ! ? ( )
. SimplifiedAutolink 옵션이 true
로 설정된 경우에만 적용됩니다.
literalmidwordunderscores : (부울) [기본 거짓]이 켜지면 단어의 중간에서 <em>
을 해석 <strong>
데 방해가 중단되고 대신 문자 그대로 밑줄로 취급됩니다.
예:
some text with __ underscores __ in middle
다음과 같이 구문 분석됩니다
< p > some text with__underscores__in middle </ p >
LeteralMidwordasterisks : (부울) [기본 거짓]이 켜지면 단어 중간에서 별표를 <em>
및 <strong>
으로 해석하는 데있어 대체가 중단되고 대신 문자 그대로의 별표로 취급됩니다.
Strikethrough : (부울) [Default False] Strikethrough 구문을 지원합니다. ~~strikethrough~~
as <del>strikethrough</del>
테이블 : (부울) [Default False] 테이블 구문을 지원합니다. 예:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
자세한 내용은 위키를 참조하십시오
TableSheaderId : (부울) [기본 거짓] 활성화 된 경우 테이블 헤더 태그에 ID 속성을 추가합니다.
GHCodeBlocks : (부울) [기본 True] GFM 코드 블록 스타일을 지원합니다.
작업리스트 : (부울) [Default False] GFM 작업 목록을 지원합니다. 예:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (부울) [기본 거짓] 불완전한 입력으로 인해 라이브 미리보기에서 이상한 효과를 방지합니다.
SmartindentationFix : (부울) [Default False]는 압축 된 코드 중에 ES6 템플릿 문자열과 관련된 들여 쓰기 문제를 현명하게 수정하려고합니다.
disableforced4spacesindentedsublists : (boolean) [default false]는 4 개의 공간에 의해 하위 목록을 들여 쓰기 요구 사항을 중첩시키기 위해 2 ~ 3 개의 공간이 충분한 오래된 행동으로 효과적으로 되돌아갑니다. (v1.5.0 이후)
SimplineBreaks : (부울) [기본 거짓] 라인 끝에 2 개의 공간이 필요하지 않고 (v1.5.1 이후) 라인이 <br>
로 파괴됩니다.
a line
wrapped in two
로 바뀝니다 :
< p > a line < br >
wrapped in two </ p >
DreimpaceBeforeHeadingText : (부울) [기본 거짓] #
과 헤더 텍스트 사이에 공간을 추가합니다 (v1.5.3 이후)
ghmentions : (부울) [Default False]는 github @mentions를 활성화합니다 .
ghmentionslink : (string) [default https://github.com/{u}
] @mentions에 의해 생성 된 링크를 변경합니다. 대결은 {u}
사용자 이름으로 대체합니다. ghmentions 옵션이 활성화 된 경우에만 적용됩니다. 예 : //mysite.com/{u}/profile
}/profile로 설정된 @tivie
<a href="//mysite.com/tivie/profile">@tivie</a>
EncodeEmails : (부울) [Default True] 캐릭터 엔티티 사용을 통해 인코딩하는 이메일 주소를 활성화하여 ASCII 전자 메일 주소를 동등한 10 진수 엔티티로 변환합니다. (v1.6.1 이후)
참고 : 버전 1.6.1 이전에 이메일은 DEC 및 HEX 인코딩을 통해 항상 난독 화됩니다.
OpenLinksInnewWindow target="_blank"
(부울) [기본 거짓 <a>
새 wind
backslashescapeshtmltags : (부울) [기본 거짓] HTML 태그 이스케이션에 대한 지원. 예 : <div>foo</div>
(v1.7.2 이후)
이모티콘 : (부울) [Default False] 이모티콘 지원을 활성화합니다. 예 : this is a :smile: emoji
사용 가능한 이모티콘에 대한 자세한 정보는 https://github.com/showdownjs/showdown/wiki/emojis (v.1.8.0 이후) 를 참조하십시오.
밑줄 : (부울) [Default False] 실험 기능은 밑줄을 지원할 수 있습니다. 구문은 Double 또는 Triple 밑줄 입니다. Ex : __underlined word__
. 이 옵션을 활성화하면 밑줄이 더 이상 <em>
및 <strong>
에 구문 분석되지 않습니다.
Ellipsis : (부울) [Default True]는 3 개의 점을 Ellipsis 유니 코드 문자로 대체합니다.
완전한 htmldocument : (boolean) [default false] html 조각 대신 <html>
, <head>
및 <body>
tags '를 포함하여 완전한 HTML 문서를 출력합니다. (v.1.8.5 이후)
메타 데이터 : (부울) [Default False] 문서 메타 데이터를 지원합니다 ( «««
«~ »»»
또는 사이에 ---
---
사이의 문서 상단에 정의 됨). (v.1.8.5 이후)
var conv = new showdown . Converter ( { metadata : true } ) ;
var html = conv . makeHtml ( someMd ) ;
var metadata = conv . getMetadata ( ) ; // returns an object with the document metadata
SplitAdJacentBlockquotes : (부울) [기본 거짓] 분할 인접 블록 쿼트 블록 (v.1.8.6 이후)
Morestyling : (부울) [Default False]는 CSS 스타일에 유용한 클래스를 추가합니다. (v2.0.1 이후)
task-list-item-complete
추가합니다.참고 : 버전 1.6.0 까지 CLI 도구에서 기본적으로 이러한 옵션이 모두 비활성화 됩니다.
또한 맛이나 사전 설정을 사용하여 올바른 옵션을 자동으로 설정하여 대결이 인기있는 Markdown 풍미처럼 작동 할 수 있습니다.
현재 다음과 같은 맛이 있습니다.
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
대결은 또한 명령 줄 인터페이스 도구와 함께 번들로 제공됩니다. 자세한 내용은 Cli Wiki 페이지를 확인할 수 있습니다.
Showdownjs 프로젝트는 또한 "플러그인"을 통해 AngularJS와 완벽하게 통합됩니다. 자세한 내용은 https://github.com/showdownjs/ngshowdown을 방문하십시오.
TypeScript를 사용하는 경우 확실한 유형을 사용하고 싶을 수도 있습니다.
SystemJS와의 통합은 타사 "System-MD"플러그인을 통해 얻을 수 있습니다.
showdownjs를 VUE 구성 요소로 빠르게 사용하려면 vue-showdown을 확인할 수 있습니다.
대결은 입력을 소독하지 않습니다. Markdown은 특정 기능이 HTML에 올바르게 구문 분석 할 수 있도록 의존하기 때문에 설계에 의한 것입니다. 그러나 이것은 XSS 주입이 상당히 가능하다는 것을 의미합니다.
자세한 내용은 Wiki 기사 Markdown의 XSS 취약점 (및 완화 방법)을 참조하십시오.
대결을 통해 확장을 통해 추가 기능을로드 할 수 있습니다. (여기에서 알려진 대결 확장 목록을 찾을 수 있습니다) 보일러 플레이트를 찾을 수도 있습니다.
< script src = "showdown.js" / >
< script src = "twitter-extension.js" / >
var converter = new showdown . Converter ( { extensions : [ 'twitter' ] } ) ;
var showdown = require ( 'showdown' ) ,
myExtension = require ( 'myExtension' ) ,
converter = new showdown . Converter ( { extensions : [ 'myExtension' ] } ) ;
저장소의 클론을 구축하는 것은 쉽습니다.
전제 조건 : node.js v12, npm 및 npx를 설치해야합니다.
npm install
실행하십시오.
npx grunt build
실행하십시오 ( Gruntfile.js
참조). 이 명령 :
dist
Folder에 배포 가능한 파일을 생성합니다. Node.js가 필요한 테스트 제품군을 사용할 수 있습니다. 노드가 설치되면 프로젝트 루트에서 다음 명령을 실행하여 종속성을 설치하십시오.
npm install
설치되면 테스트는 다음을 사용하여 프로젝트 루트에서 실행할 수 있습니다.
npm test
새로운 테스트 케이스를 쉽게 추가 할 수 있습니다. 테스트 할 Markdown이 포함 된 Markdown 파일 ( .md
로 끝)을 만듭니다. 정확히 같은 이름의 .html
파일을 만듭니다. 테스트가 mocha
로 실행되면 자동으로 테스트됩니다.
기여하고 싶다면 다음의 빠른 가이드를 읽으십시오.
문제를 제출하여 새로운 기능을 요청할 수 있습니다. 새로운 기능을 구현하려면 풀 요청을 자유롭게 발행하십시오.
PR은 굉장합니다. 그러나 풀 요청을 제출하기 전에 다음 지침을 고려하십시오.
제출과 관련된 열린 또는 닫힌 풀 요청을 검색하십시오. 당신은 노력을 중복시키고 싶지 않습니다.
코드를 변경하는 PRS를 발행 할 때 개발을 기반으로 새로운 GIT 지점을 변경하십시오.
git checkout -b my-fix-branch develop
제출하기 전에 전체 테스트 스위트를 실행하고 모든 테스트가 통과하십시오 (분명히 = P).
코딩 스타일 규칙을 따르십시오. 그들을 깨뜨리는 것은 PR이 테스트를 통과하지 못하게합니다.
동일한 풀 요청에서 여러 문제를 수정하지 마십시오. Big One을 검토하기가 어렵지 않고 여러 개의 소규모 PR을 열는 것이 바람직합니다.
PR이 새로운 기능을 소개하거나 문제를 해결하면 적절한 테스트 사례를 추가하십시오 .
우리는 기존 커밋 노트를 사용하여 기존의 변경 사항 사양을 따르는 변화를 생성합니다. 커밋 메시지가 이러한 커밋 가이드 라인을 준수하는 경우 매우 유용합니다.
Credits.md 파일에 이름을 추가하는 것을 잊지 마십시오. 우리는 신용을주는 것을 좋아합니다.
변경 사항을 제안하면 :
git rebase develop -i
git push origin my-fix-branch -f
풀 요청이 병합되면 분기를 안전하게 삭제할 수 있습니다.
이 프로젝트에 기여할 시간이 있다면, 우리는 당신이 그 프로젝트에 대한 신용을받을 의무가 있다고 생각합니다. 이 규칙을 통해 PR을 더 빨리 검토 할 수 있으며 GitHub 프로필에서 적절한 크레딧을 제공합니다. 귀하의 기여에 미리 감사드립니다!
대결을 유지하는 데 도움이되는 회원을 찾고 있습니다. 이 메모에 대한 관심을 표명하거나 의견을 표명하려면이 문제를 참조하십시오.
전체 신용 목록 https://github.com/showdownjs/showdown/blob/master/credits.md
대결은 다음과 같습니다.