GitHub Pages에 Next.js와 shadcn/ui를 사용하여 정적 블로그를 구축하는 과정을 공유합니다.
안녕하세요! 이번 포스트에서는 Next.js와 shadcn/ui를 사용하여 GitHub Pages에 정적 블로그를 구축하는 과정을 공유하려고 합니다.
Next.js는 React 기반의 프레임워크로, 정적 사이트 생성(SSG) 기능을 제공합니다. GitHub Pages는 무료로 정적 웹사이트를 호스팅할 수 있는 서비스입니다. 이 둘을 조합하면 비용 없이 고성능의 블로그를 운영할 수 있습니다.
우리가 구현한 블로그의 주요 기능은 다음과 같습니다:
const techStack = {
framework: "Next.js 14",
ui: "shadcn/ui",
styling: "Tailwind CSS",
content: "MDX",
deployment: "GitHub Pages",
language: "TypeScript"
}
먼저 Next.js 프로젝트를 생성하고 정적 내보내기를 위한 설정을 추가했습니다:
// next.config.js
module.exports = {
output: 'export',
basePath: process.env.NODE_ENV === 'production' ? '/repo-name' : '',
images: {
unoptimized: true,
},
}
shadcn/ui는 Radix UI와 Tailwind CSS를 기반으로 한 컴포넌트 라이브러리입니다. 필요한 컴포넌트만 복사해서 사용할 수 있어 번들 크기를 최적화할 수 있습니다.
next-mdx-remote를 사용하여 MDX 파일을 처리하고, gray-matter로 frontmatter를 파싱합니다:
export async function getPostBySlug(slug: string) {
const fileContents = fs.readFileSync(fullPath, 'utf8')
const { data, content } = matter(fileContents)
const mdxSource = await serialize(content, {
mdxOptions: {
remarkPlugins: [remarkGfm],
rehypePlugins: [rehypeSlug, rehypeCodeTitles, rehypePrism],
},
})
return { slug, content: mdxSource, ...data }
}
Next.js와 shadcn/ui를 사용하여 GitHub Pages에 블로그를 구축하는 것은 비용 효율적이면서도 강력한 선택입니다. 정적 사이트의 장점인 빠른 로딩 속도와 SEO 최적화를 누리면서도, React의 유연성을 활용할 수 있습니다.
이 블로그의 소스 코드는 GitHub에서 확인하실 수 있습니다!
overflow-x: hidden으로 덮어둔 문제가 터지기까지. 테이블 오버플로부터 Radix Sheet 스크롤 잠금까지, 모바일 가로 스크롤 문제를 근본적으로 해결한 과정을 정리합니다.
TypeScript를 사용하면서 개발 생산성을 향상시킬 수 있는 실용적인 팁들을 공유합니다.
Spring의 @Controller와 @RestController 어노테이션의 차이점과 사용 시나리오를 실제 예제와 함께 알아봅니다
백준 2526번 싸이클 문제를 풀며 나머지 연산의 순환 특성을 이해하고 최적화하는 과정