13 메인 페이지에 실제 데이터 띄워보기 - Markdown 파일을 사용하기 위한 라이브러리 세팅하기

source: categories/study/gatsby/gatsby_9-04.md

메인 페이지에 실제 데이터 띄워보기

Markdown 파일을 사용하기 위한 라이브러리 세팅하기

Markdown 처리를 위해 어떤 라이브러리가 필요할까?

기본적으로 Markdown Parser 라이브러리만 있어도 직접 스타일을 변경하여 충분히 띄워줄 수 있지만, 이 방법에도 한계가 있습니다.

따라서 Markdown 처리를 위한 여러 플러그인을 사용해야 하는데, 어떤 라이브러리를 설치하고, 해당 라이브러리가 어떤 역할을 하는지 알아봅시다.

  1. gatsby-transformer-remark
    • Markdown Parser 역할을 하는 라이브러리입니다.
    • 마크다운 문법을 HTML 형태로 변환해주어 띄워줄 수 있도록 해주는 핵심 라이브러리입니다.
  2. gatsby-remark-images
    • 마크다운 문서 내에서의 이미지 사용을 최적화해주는 라이브러리입니다.
    • 다양한 반응형 이미지 생성, 동적 로딩 등 다양한 기능을 제공해줍니다.
  3. gatsby-remark-prismjs & prismjs
    • prismjs는 문법 하이라이팅 역할을 담당하는 라이브러리입니다.
    • 소스코드를 실제 IDE에서 보는 것처럼 변환해주는 기능을 제공합니다.
  4. gatsby-remark-smartypants
    • 해당 라이브러리는 글 내에서 사용되는 여러 문장 부호들을 더 깔끔한 부호로 바꿔주는 기능을 제공하고 있습니다.
    • 이를 통해 글의 가독성을 보다 더 높일 수 있습니다.
  5. gatsby-remark-copy-linked-files
    • 마크다운 내에서 사용되는 이미지를 특정 디렉토리로 복사해주는 라이브러리입니다.
    • 일반적으로 루트 디렉토리의 public 디렉토리에 이미지들이 복사됩니다.
  6. 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';