๐Ÿ‰ tailwindCss + markdown ์ ์šฉ

๋ฐ•์ƒ์€ยท2022๋…„ 4์›” 27์ผ
6

โœ๏ธ blelog โœ๏ธ

๋ชฉ๋ก ๋ณด๊ธฐ
2/13

โœ๏ธ markdown ๋ทฐ์–ด ์‚ฌ์šฉ๋ฒ•

๋งŒ์•ฝ tailwindCss๋ฅผ ์ ์šฉํ–ˆ๊ฑฐ๋‚˜ ํ˜น์€ css๋ฅผ reset ํ–ˆ๋‹ค๋ฉด ์•„๋งˆ๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.
์™œ๋ƒํ•˜๋ฉด tailwindCss์—์„œ @tailwind base ๋ถ€๋ถ„์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒœ๊ทธ์˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝ์‹œ์ผœ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— markdown์ด ํŒŒ์‹ฑ๋œ ํƒœ๊ทธ๋“ค์ด ํ™”๋ฉด์— ๋žœ๋”๋ง ๋˜์–ด๋„ ๊ธฐ๋ณธ css๊ฐ€ ๋ชจ๋‘ ์ œ๊ฑฐ๋˜์–ด์„œ ๋ ˆ์ด์•„์›ƒ์ด ์ด์ƒํ•˜๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค..

  • ํ•ด๊ฒฐ๋ฒ• 1
    tailwindcss - preflight๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ ์ ์šฉ์„ ์—†์• ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ํ•˜์ง€๋งŒ ์ €๋Š” ์ด๋ฏธ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์—ˆ๊ธฐ๋„ ํ•˜๊ณ , @tailwind base์—์„œ ์ ์šฉํ•ด ์ฃผ๋Š” ์Šคํƒ€์ผ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

  • ํ•ด๊ฒฐ๋ฒ• 2
    tailwindcss - typography
    ํŠน์ • ์˜์—ญ์—๋งŒ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.
    prose๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์†์„ฑ์ด ์žˆ๊ณ , ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ํ•ด์•ผ ํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์„ธํŒ…์ด ์žˆ์œผ๋‹ˆ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ๋”ฐ๋ผ ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

1. tailwindcss.config.js ์ˆ˜์ •

  • ์„ค์น˜
npm install -D @tailwindcss/typography
  • tailwind.config.js
module.exports = {
  // ์•„๋ž˜ ๊ตฌ๋ฌธ ์ถ”๊ฐ€
  plugins: [require("@tailwindcss/typography")],
}

2. react-markdown ์‚ฌ์šฉ

  • ์„ค์น˜
npm install react-markdown remark-gfm
  • ์ฝ”๋“œ ์˜ˆ์‹œ
import ReactMarkdown from "react-markdown";
import remarkGfm from "remark-gfm";

type Props = {
  markdown: string;
};

const Markdown = ({ markdown }: Props) => {
  return (
    <ReactMarkdown
      // react-markdown์—์„œ ์ง€์›ํ•ด ์ฃผ์ง€ ์•Š๋Š” ๋ฌธ๋ฒ•๋“ค์„ ์ถ”๊ฐ€๋กœ ๋ณ€ํ˜•์‹œํ‚ค๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ( table, link ๋“ฑ )
      remarkPlugins={[remarkGfm]}
      // ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ์ถ”๊ฐ€์ ์œผ๋กœ ํŠน์ • ํƒœ๊ทธ์— ์›ํ•˜๋Š” ์Šคํƒ€์ผ๋ง์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Œ
      components={{
        a: ({ node, ...props }) => (
          <a {...props} className="text-indigo-500 no-underline" />
        ),
      }}
    >
      {markdown}
    </ReactMarkdown>
  );
}

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 2์›” 17์ผ

๋•๋ถ„์— ๋ฌธ์ œ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2024๋…„ 4์›” 11์ผ

ํ‚ค์•ผ.... ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ