📄
← āļāļĨāļąāļšāđ„āļ›āļ„āļđāđˆāļĄāļ·āļ­

āļ§āļīāļ˜āļĩāđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML: āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒ

· āđāļ—āđ‡āļ: markdown-to-html, markdown-converter, static-site-generator, jekyll-markdown, markdown-processing

āļ§āļīāļ˜āļĩāđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML

Markdown āļ–āļđāļāļ­āļ­āļāđāļšāļšāļĄāļēāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ āđāļ•āđˆāđ€āļ§āđ‡āļšāļ—āļģāļ‡āļēāļ™āļšāļ™ HTML āđ€āļ­āļāļŠāļēāļĢ Markdown āļ—āļļāļāļ‰āļšāļąāļšāļ•āđ‰āļ­āļ‡āđāļ›āļĨāļ‡āđ€āļ›āđ‡āļ™ HTML āļāđˆāļ­āļ™āļ—āļĩāđˆāđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāļˆāļ°āđāļŠāļ”āļ‡āļœāļĨāđ„āļ”āđ‰ āļ„āļđāđˆāļĄāļ·āļ­āļ™āļĩāđ‰āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ§āļīāļ˜āļĩāļāļēāļĢāļŦāļĨāļąāļāđƒāļ™āļāļēāļĢāđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML

āļ§āļīāļ˜āļĩāļ—āļĩāđˆ 1: āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļšāļĢāļĢāļ—āļąāļ”āļ„āļģāļŠāļąāđˆāļ‡

Pandoc

Pandoc āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĨāļ‡āđ€āļ­āļāļŠāļēāļĢāļŠāļēāļāļĨāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāļĢāļđāļ›āđāļšāļšāļĄāļēāļāļĄāļēāļĒ

# āļāļēāļĢāđāļ›āļĨāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™
pandoc input.md -o output.html

# HTML āđāļšāļšāļŠāđāļ•āļ™āļ”āđŒāļ­āđ‚āļĨāļ™āļžāļĢāđ‰āļ­āļĄāđāļ—āđ‡āļ <html> āđāļĨāļ° <body>
pandoc input.md -o output.html -s

# āļžāļĢāđ‰āļ­āļĄāļŠāļēāļĢāļšāļąāļ
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: āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāđāļšāļš Static

Jekyll

Jekyll āļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™ GitHub Pages āļĄāļąāļ™āđāļ›āļĨāļ‡āđ„āļŸāļĨāđŒ Markdown āļˆāļēāļ _posts āļŦāļĢāļ·āļ­ collections āđ€āļ›āđ‡āļ™ HTML

gem install jekyll bundler
jekyll new my-site
jekyll build
jekyll serve

āđƒāļŠāđ‰āļ•āļąāļ§āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ Kramdown āļžāļĢāđ‰āļ­āļĄāđ€āļ—āļĄāđ€āļžāļĨāļ• Liquid āļŠāļģāļŦāļĢāļąāļšāđ€āļ™āļ·āđ‰āļ­āļŦāļēāđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ

Hugo

Hugo āđ€āļ›āđ‡āļ™āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāđāļšāļš static āļ—āļĩāđˆāđƒāļŠāđ‰ Go āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ—āļĩāđˆāļĢāļđāđ‰āļˆāļąāļāđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĢāļ°āļ”āļąāļšāļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩ

hugo new site my-site
hugo new posts/my-first-post.md
hugo server -D

āđƒāļŠāđ‰ Goldmark āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđ€āļĢāļ™āđ€āļ”āļ­āļĢāđŒ Markdown āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ āļžāļĢāđ‰āļ­āļĄāļĢāļ­āļ‡āļĢāļąāļšāļ•āļēāļĢāļēāļ‡ āļšāļĨāđ‡āļ­āļāđ‚āļ„āđ‰āļ”āđāļšāļšāļĄāļĩāļĢāļąāđ‰āļ§ āđāļĨāļ°āđ€āļŠāļīāļ‡āļ­āļĢāļĢāļ–

Next.js (MDX)

Next.js āļĢāļ­āļ‡āļĢāļąāļš MDX āļāļąāļ‡ React components āļ āļēāļĒāđƒāļ™ Markdown

npm install next @next/mdx @mdx-js/loader

MDX āđƒāļŦāđ‰āļ„āļļāļ“āđƒāļŠāđˆāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”āļŠāļ” āđāļœāļ™āļ āļđāļĄāļī āđāļĨāļ°āļŸāļ­āļĢāđŒāļĄāđƒāļ™āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļš

āļ§āļīāļ˜āļĩāļ—āļĩāđˆ 3: āļ•āļąāļ§āđāļ›āļĨāļ‡āļ­āļ­āļ™āđ„āļĨāļ™āđŒ

āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđāļ›āļĨāļ‡āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļ•āļīāļ”āļ•āļąāđ‰āļ‡āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­ āļ•āļąāļ§āđāļ›āļĨāļ‡āđƒāļ™āđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāđƒāļŦāđ‰āļœāļĨāļĨāļąāļžāļ˜āđŒāļ—āļąāļ™āļ—āļĩ:

  1. āļ§āļēāļ‡āļŦāļĢāļ·āļ­āļžāļīāļĄāļžāđŒ Markdown āļĨāļ‡āđƒāļ™āđāļœāļ‡āļ•āļąāļ§āđāļāđ‰āđ„āļ‚
  2. āļœāļĨāļĨāļąāļžāļ˜āđŒ HTML āļ›āļĢāļēāļāļāđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒ
  3. āļ„āļąāļ”āļĨāļ­āļ 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 |

āđ„āļ›āļ›āđŒāđ„āļĨāļ™āđŒāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ

āđ€āļĄāļ·āđˆāļ­āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāđāļšāļš static āđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML āļĄāļąāļ™āļ—āļģāļ•āļēāļĄāđ„āļ›āļ›āđŒāđ„āļĨāļ™āđŒāļ™āļĩāđ‰:

Markdown → āđāļĒāļāđ€āļ›āđ‡āļ™ AST → āđƒāļŠāđ‰āļŠāđˆāļ§āļ™āļ‚āļĒāļēāļĒ â†’ āđ€āļĢāļ™āđ€āļ”āļ­āļĢāđŒāđ€āļ›āđ‡āļ™ HTML → āđƒāļŠāđ‰āđ€āļ—āļĄāđ€āļžāļĨāļ• â†’ āļŦāļ™āđ‰āļēāđ€āļ­āļēāļ•āđŒāļžāļļāļ•

āļŦāļēāļāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđ„āļĄāđˆāđāļŠāļ”āļ‡āļœāļĨāļ•āļēāļĄāļ—āļĩāđˆāļ„āļēāļ”āļŦāļ§āļąāļ‡ āļ›āļąāļāļŦāļēāļĄāļąāļāļ­āļĒāļđāđˆāļ—āļĩāđˆāļ•āļąāļ§āđāļĒāļāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒ (āđ„āļĄāđˆāļĢāļ­āļ‡āļĢāļąāļšāđ„āļ§āļĒāļēāļāļĢāļ“āđŒāļ™āļąāđ‰āļ™) āļŦāļĢāļ·āļ­āļ•āļąāļ§āđ€āļĢāļ™āđ€āļ”āļ­āļĢāđŒ (āļŠāđˆāļ‡āļ­āļ­āļ HTML āļ—āļĩāđˆāđ„āļĄāđˆāļ„āļēāļ”āļ„āļīāļ”)

āđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML āļ­āļ­āļ™āđ„āļĨāļ™āđŒ

āđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĄāļ·āļ­āđāļŠāļ”āļ‡āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡ Markdown āđ€āļžāļ·āđˆāļ­āđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML āļ—āļąāļ™āļ—āļĩ āļžāļīāļĄāļžāđŒāļŦāļĢāļ·āļ­āļ§āļēāļ‡ Markdown āđƒāļ™āđ€āļ­āļ”āļīāđ€āļ•āļ­āļĢāđŒ āđāļĨāđ‰āļ§āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāđ€āļĢāļ™āđ€āļ”āļ­āļĢāđŒāđāļĨāđ‰āļ§āļˆāļ°āļ­āļąāļ›āđ€āļ”āļ•āđāļšāļšāđ€āļĢāļĩāļĒāļĨāđ„āļ—āļĄāđŒ

āļ§āļīāļ˜āļĩāđāļ›āļĨāļ‡ Markdown āđ€āļ›āđ‡āļ™ HTML: āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒ - CoolTool