13 메인 페이지에 실제 데이터 띄워보기 - Markdown 파일을 사용하기 위한 라이브러리 세팅하기
source: categories/study/gatsby/gatsby_9-04.md
메인 페이지에 실제 데이터 띄워보기
Markdown 파일을 사용하기 위한 라이브러리 세팅하기
Markdown 처리를 위해 어떤 라이브러리가 필요할까?
기본적으로 Markdown Parser 라이브러리만 있어도 직접 스타일을 변경하여 충분히 띄워줄 수 있지만, 이 방법에도 한계가 있습니다.
따라서 Markdown 처리를 위한 여러 플러그인을 사용해야 하는데, 어떤 라이브러리를 설치하고, 해당 라이브러리가 어떤 역할을 하는지 알아봅시다.
- gatsby-transformer-remark
- Markdown Parser 역할을 하는 라이브러리입니다.
- 마크다운 문법을 HTML 형태로 변환해주어 띄워줄 수 있도록 해주는 핵심 라이브러리입니다.
- gatsby-remark-images
- 마크다운 문서 내에서의 이미지 사용을 최적화해주는 라이브러리입니다.
- 다양한 반응형 이미지 생성, 동적 로딩 등 다양한 기능을 제공해줍니다.
- gatsby-remark-prismjs & prismjs
- prismjs는 문법 하이라이팅 역할을 담당하는 라이브러리입니다.
- 소스코드를 실제 IDE에서 보는 것처럼 변환해주는 기능을 제공합니다.
- gatsby-remark-smartypants
- 해당 라이브러리는 글 내에서 사용되는 여러 문장 부호들을 더 깔끔한 부호로 바꿔주는 기능을 제공하고 있습니다.
- 이를 통해 글의 가독성을 보다 더 높일 수 있습니다.
- gatsby-remark-copy-linked-files
- 마크다운 내에서 사용되는 이미지를 특정 디렉토리로 복사해주는 라이브러리입니다.
- 일반적으로 루트 디렉토리의 public 디렉토리에 이미지들이 복사됩니다.
- gatsby-remark-external-links
- 이 라이브러리는 마크다운 내에서 사용되는 링크 태그의 target, rel 등의 속성을 지정해주는 기능을 제공해줍니다.
필요한 라이브러리 설치하기
위에서 기술한 모든 라이브러리를 아래의 커맨드를 통해 다운로드 받으면 됩니다.
yarn add gatsby-transformer-remark gatsby-remark-images gatsby-remark-prismjs prismjs gatsby-remark-smartypants gatsby-remark-copy-linked-files gatsby-remark-external-links
하지만 Gatsby에서 해당 라이브러리를 사용하기 위해서는 추가적으로 해줘야 할 설정 작업이 존재합니다.
라이브러리 불러오기 및 옵션 설정하기
gatsby-config.js
파일에서 사용하기 위한 라이브러리를 추가해줘야 합니다.
따라서 다음과 같이 코드를 수정해줍시다.
gatsby-config.js
module.exports = {
siteMetadata: {
title: `Gatsby Default Starter`,
description: `Kick off your next, great Gatsby project with this default starter. This barebones starter ships with the main Gatsby configuration files you might need.`,
author: `@gatsbyjs`,
},
plugins: [
{
resolve: 'gatsby-plugin-typescript',
options: {
isTSX: true,
allExtensions: true,
},
},
`gatsby-plugin-emotion`,
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `contents`,
path: `${__dirname}/contents`,
},
},
`gatsby-transformer-sharp`,
`gatsby-plugin-sharp`,
{
resolve: `gatsby-transformer-remark`,
options: {
plugins: [
{
resolve: 'gatsby-remark-smartypants',
options: {
dashes: 'oldschool',
},
},
{
resolve: 'gatsby-remark-prismjs',
options: {
classPrefix: 'language-',
},
},
{
resolve: 'gatsby-remark-images',
options: {
maxWidth: 768,
quality: 100,
withWebp: true,
},
},
{
resolve: 'gatsby-remark-copy-linked-files',
options: {},
},
{
resolve: 'gatsby-remark-external-links',
options: {
target: '_blank',
rel: 'nofollow',
},
},
],
},
},
],
};
그리고 마크다운 내 코드 테마 적용을 위해 gatsby-browser.js
파일에 아래와 같이 테마를 불러오는 코드를 작성해줘야 합니다.
여기에서는 prism-tomorrow
테마를 적용해주지만, 이 외에도 다양한 테마를 제공하기 때문에 취향에 따라 원하는 테마를 골라서 적용해줘도 상관없습니다.
gatsby-browser.js
import 'prismjs/themes/prism-tomorrow.css';