Markdown์ HTML๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ: ์ ์ฒด ๊ฐ์ด๋
Markdown์ HTML๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
Markdown์ ๊ธ์ฐ๊ธฐ๋ฅผ ์ํด ์ค๊ณ๋์์ง๋ง, ์น์ HTML ์์์ ๋์ํฉ๋๋ค. ๋ชจ๋ Markdown ๋ฌธ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ํ๊ธฐ ์ ์ HTML๋ก ๋ณํ๋์ด์ผ ํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ Markdown์ HTML๋ก ๋ณํํ๋ ์ฃผ์ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
๋ฐฉ๋ฒ 1: ๋ช ๋ น์ค ๋๊ตฌ
Pandoc
Pandoc์ ์์ญ ๊ฐ์ง ํ์์ ์ง์ํ๋ ๋ฒ์ฉ ๋ฌธ์ ๋ณํ๊ธฐ์ ๋๋ค.
# Basic conversion
pandoc input.md -o output.html
# Standalone HTML with <html> and <body> tags
pandoc input.md -o output.html -s
# With table of contents
pandoc input.md -o output.html -s --toc
Python-Markdown
pip install markdown
python -m markdown input.md > output.html
import markdown
with open("input.md", "r") as f:
text = f.read()
html = markdown.markdown(text, extensions=["fenced_code", "tables"])
CommonMark (JavaScript)
npm install commonmark
const commonmark = require("commonmark");
const reader = new commonmark.Parser();
const writer = new commonmark.HtmlRenderer();
const parsed = reader.parse("# Hello\nThis is **bold**.");
const html = writer.render(parsed);
๋ฐฉ๋ฒ 2: ์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ
Jekyll
Jekyll์ GitHub Pages๋ฅผ ๊ตฌ๋ํฉ๋๋ค. _posts ๋๋ ์ปฌ๋ ์
์ Markdown ํ์ผ์ HTML๋ก ๋ณํํฉ๋๋ค.
gem install jekyll bundler
jekyll new my-site
jekyll build
jekyll serve
๋์ ์ฝํ ์ธ ๋ฅผ ์ํด Liquid ํ ํ๋ฆฟ๊ณผ ํจ๊ป Kramdown ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Hugo
Hugo๋ ๋ฐ๋ฆฌ์ด ๋จ์์ ๋น๋ ์๋๋ก ์ ๋ช ํ Go ๊ธฐ๋ฐ ์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ์ ๋๋ค.
hugo new site my-site
hugo new posts/my-first-post.md
hugo server -D
ํ ์ด๋ธ, ํ์ค ์ฝ๋ ๋ธ๋ก, ๊ฐ์ฃผ๋ฅผ ์ง์ํ๋ Goldmark๋ฅผ ๊ธฐ๋ณธ Markdown ๋ ๋๋ฌ๋ก ์ฌ์ฉํฉ๋๋ค.
Next.js (MDX)
Next.js๋ Markdown ์์ React ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ์ ์๋ MDX๋ฅผ ์ง์ํฉ๋๋ค.
npm install next @next/mdx @mdx-js/loader
MDX๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ ๋ผ์ด๋ธ ์ฝ๋ ์์ , ์ฐจํธ, ํผ์ ํฌํจํ ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ 3: ์จ๋ผ์ธ ๋ณํ๊ธฐ
๋๊ตฌ ์ค์น ์์ด ์ผํ์ฑ ๋ณํ์ ์ํ๋ค๋ฉด, ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ๋ณํ๊ธฐ๊ฐ ์ฆ๊ฐ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค:
- ํธ์ง๊ธฐ ํจ๋์ Markdown์ ๋ถ์ฌ๋ฃ๊ฑฐ๋ ์ ๋ ฅํฉ๋๋ค.
- HTML ์ถ๋ ฅ์ด ์ค์๊ฐ์ผ๋ก ํ์๋ฉ๋๋ค.
- ์์ฑ๋ HTML์ ๋ณต์ฌํ์ฌ ๋ชจ๋ ์น ํ์ด์ง๋ CMS์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Markdown ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋๊ตฌ๋ GitHub Flavored Markdown(ํ ์ด๋ธ, ์ฝ๋ ๋ธ๋ก, ์์ ๋ชฉ๋ก, ์ทจ์์ )์ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ ์ฒ๋ฆฌํฉ๋๋ค.
๋ฐฉ๋ฒ 4: ํธ์ง๊ธฐ ํ๋ฌ๊ทธ์ธ
| ํธ์ง๊ธฐ | ๊ธฐ๋ฅ | ๋ช
๋ น์ด |
|--------|---------|---------|
| VS Code | ๋ด์ฅ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | Ctrl+Shift+V |
| Sublime Text | MarkdownPreview | Alt+M |
| IntelliJ IDEA | ๋ด์ฅ ์ง์ | Quick Documentation |
| Vim | vim-markdown | :MarkdownPreview |
์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ
์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ๊ฐ Markdown์ HTML๋ก ๋ณํํ ๋, ๋ค์๊ณผ ๊ฐ์ ํ์ดํ๋ผ์ธ์ ๋ฐ๋ฆ ๋๋ค:
Markdown โ Parse to AST โ Apply extensions โ Render to HTML โ Apply template โ Output page
๊ธฐ๋ฅ์ด ์์๋๋ก ๋ ๋๋ง๋์ง ์๋๋ค๋ฉด, ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ํ์(ํด๋น ๋ฌธ๋ฒ์ ์ง์ํ์ง ์์)๋ ๋ ๋๋ฌ(์์์น ๋ชปํ HTML์ ์ถ๋ ฅํจ)์ ์์ต๋๋ค.
Markdown์ HTML๋ก ์จ๋ผ์ธ ๋ณํ
Markdown ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ Markdown์ HTML๋ก ์ฆ์ ๋ณํํ์ธ์. ํธ์ง๊ธฐ์ Markdown์ ์ ๋ ฅํ๊ฑฐ๋ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋ ๋๋ง๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.