> 블로그, 14버전 Next.js로 새로 교체하다!
Crescent
Table of Contents
😇 갑자기 블로그를 새로 교체한 사연.
- 나는 내 블로그의 node 버전을 20이라 생각했는데 18도 아닌 16였네요.
next.js
으로 작성된 블로그여서 vercel에 배포한 상태였는데 vercel에서 방 빼라 경고장이 날아왔습니다;; - 그냥 마크다운이 아닌
.mdx
기반의 블로그을 사용하고 있었다. 찾다 보니깐 line highlight 기능이 있는 것을 알게 되었고, 이 기능을 사용하고 싶었습니다. - 그런데 기존의 블로그 코드가 꼬였는지 파일 하나만 올렸는데도 배포 오류가 나서 그냥 새로 만들기로 했습니다.
🥰 주요 제공 기능
- 기본적으로 Next.js + TailwindCSS + TypeScript + Contentlayer를 사용했습니다.
- contentlayer로
mdx
파일을 파싱해서 데이터를 가져왔고, 거기서 제공하는remark
와rehype
를 사용해 문서를 꾸몄습니다. - 기존의 블로그 기능을 살리는 방향으로 갔습니다.
- 제가 좋아하는 머테리얼 컬러인 #26a69a계통을 사용해 블로그의 포인트를 주었습니다.
1. 제목, 캡션 그리고 하이라이트 기능
```js title="라인 하이라이트 기능" caption="라인 하이라이트 기능을 사용한 코드 블록" showLineNumbers 9 /textInput/
이라고 작성하면 위와 같은 결과를 얻을 수 있습니다.rehype-pretty-code
를 사용했습니다.- 코드의 테마는
min-light
로 설정했습니다.
rehype-figure
를 사용해 이미지에 캡션을 추가했습니다.- 닥스훈트는 정말 멋진 개입니다.(이미지 출처: Dog CEO's Dog API) -> 라고 코파일럿이 작성하래요.
2. 수식
remark-math
와rehype-katex
을 사용했습니다.rehype-mathjax
를 사용했을 때 실행이 되지 않는 문제가 있어서rehype-katex
로 변경했습니다.
2.1. 중복된 수식 숨기기
global.css
에span.katex-html
을 숨기는 코드를 추가해 이를 해결했습니다.
3. RSS
rss
를 사용해 RSS를 생성했습니다.- App router가 아닌 Page router로 진행했기에,
/api/
에 라우팅을 추가한 후next.config.js
의rewrites
에 추가했습니다.
4. TOC (Table of Contents)
rehype-autolink-headings
와rehype-slug
를 사용해 TOC를 만들었습니다.rehype-autolink-headings
는 제목에 링크를 추가해주고,rehype-slug
는 제목에id
를 추가해줍니다.rehype-slug
의 hypen 붙이는 알고리즘인github-slugger
를 사용했고,.replace
나.replaceAll
를 사용해 h1~h6까지의 제목에서의 링크 등의 마크다운에서 꾸밈효과를 제거했습니다.
그 외 체크리스트
- OG Tag (?)
- SEO
- Sitemap
- Google Analytics
- RSS
- TOC
- Code Block Styling
- 수식
- 이미지 캡션
- 댓글 기능
감사한 문서
Next.js 블로그에서 코드 블록 꾸미기, rehype-pretty-code 플러그인 활용법: 사실 이 글을 보고 블로그를 뒤엎게 되었습니다.