React 프로젝트에서 Markdown을 렌더링하기 위한 방법을 정리해보았습니다.
2taeyoon님의 글을 참고하여 작성했습니다.
react-markdown
은 Markdown을 HTML로 변환해주는 React용 라이브러리입니다.
아래 명령어 중 패키지 매니저에 맞게 설치하세요.
// npm
npm install react-markdown
// yarn
yarn add react-markdown
// pnpm
pnpm add react-markdown
설치 후, 아래와 같이 컴포넌트에서 react-markdown
을 사용해 Markdown
을 렌더링할 수 있습니다.
import ReactMarkdown from 'react-markdown';
const PostDetail = ({ post }) => {
return (
<div>
<ReactMarkdown>{post.content}</ReactMarkdown>
</div>
);
};
하지만 이렇게만 작성하면 TailwindCSS
를 사용할 때 일부 Markdown
스타일이 제대로 적용되지 않는 경우가 있을 수 있습니다.
이를 해결하기 위해 Tailwind
의 Typography
플러그인을 추가 설정해야 합니다.
TailwindCSS
의 @tailwindcss/typography
플러그인을 설치합니다.
npm install -D @tailwindcss/typography
tailwind.config.js
파일에서 플러그인을 추가합니다.
// tailwind.config
/** @type {import('tailwindcss').Config} */
/** @type {import('tailwindcss').Config} */
module.exports = {
theme: {
extend: {
// 필요하면 Typography 관련 커스터마이징을 추가 가능
},
},
plugins: [
require('@tailwindcss/typography'),
],
};
Typography 플러그인을 설정한 후, 아래와 같이 prose 클래스를 활용하여 Markdown 스타일을 적용할 수 있습니다.
import ReactMarkdown from 'react-markdown';
const PostDetail = ({ post }) => {
return (
<div className="prose dark:prose-invert max-w-none">
<ReactMarkdown>{post.content}</ReactMarkdown>
</div>
);
};
react-markdown
으로 마크다운을 렌더링하고, @tailwindcss/typograpy
를 사용해 자동으로 깔끔한 스타일을 적용했습니다.✅ 참고
This is helpful, but why the typography plugin is needed for those new to tailwind? https://tagunblocked.com/