React로 Notion 정적 블로그 만들기
IntrodutionNotion API 키 발급React 웹 프로젝트 생성각 폴더/파일 설명Tailwind 설치Tailwind 설정Notion 데이터 가져오기Github 저장소에 배포하기Vercel로 배포하기참고자료
Introdution
이 문서에서는 Notion에서 데이터를 가져와 React와 Tailwind를 이용하여 정적 블로그를 만들고, Github 저장소에 배포하는 방법과 Vercel을 이용하여 블로그를 배포하는 방법을 설명한다.
Notion API 키 발급
Notion API를 사용하여 데이터를 가져오기 위해서는 Notion API 키가 필요하다. Notion API를 사용하기 위해서는 Notion 계정이 있어야 하며, 계정이 없는 경우 Notion 홈페이지에서 회원가입을 한다.
- Notion 홈페이지에서 로그인한 후, My Integrations 페이지로 이동한다.
New Integration
버튼을 클릭한다.
Integration name
에 원하는 이름을 입력하고,Submit
버튼을 클릭한다.
- 발급된
Internal Integration Token
을 메모한다.
React 웹 프로젝트 생성
React를 이용하여 웹 프로젝트를 생성하는 방법은 다음과 같다.
React 앱을 실행하기 위해서는 Node.js와 npm이 설치되어 있어야 한다. Node.js와 npm이 설치되어 있지 않은 경우, 공식 홈페이지에서 Node.js를 다운로드하여 설치한다.
각 폴더/파일 설명
src ├── components # 재사용 가능한 컴포넌트들을 저장하는 폴더 ├── pages # React로 작성된 화면의 페이지들을 저장하는 폴더 │ └── index.js # Notion에서 가져온 데이터를 이용하여 페이지를 렌더링하는 파일 ├── config.js # Notion API와 관련된 정보들을 저장하는 파일 ├── postcss.config.js # CSS 전처리기를 설정하는 파일 └── tailwind.config.js # Tailwind를 설정하는 파일
create-react-app
을 이용하여 React 앱을 생성한다.
npx create-react-app {프로젝트 이름}
npx:
npx
는 npm 패키지를 실행할 수 있는 명령어입니다. npm install
명령어로 패키지를 설치하면, 로컬 컴퓨터에 해당 패키지가 저장됩니다. npx
명령어를 사용하면 로컬 컴퓨터에 저장된 패키지가 아니더라도 실행할 수 있습니다.create-react-app:
create-react-app
은 React 앱을 쉽게 생성할 수 있는 명령어입니다. 이 명령어를 사용하면 React 앱을 생성하는 데 필요한 파일과 폴더를 자동으로 생성해줍니다. React 앱을 생성하기 위해서는 Node.js와 npm이 설치되어 있어야 합니다.- 생성된 프로젝트 폴더로 이동한다.
cd {프로젝트 이름}
- 생성된 프로젝트 폴더에서 다음 명령어를 입력하여 React 앱을 실행한다.
npm start
- 브라우저에서
localhost:3000
으로 접속하면 React 앱이 실행된다.
Tailwind 설치
Tailwind는 CSS 프레임워크로, CSS를 작성하기 위한 클래스를 제공한다. 이를 이용하면 CSS를 손쉽게 작성할 수 있다.
npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
Tailwind 설정
Tailwind를 설정한다.
tailwind.config.js
파일을 생성한다.
npx tailwindcss init
tailwind.config.js
파일 수정
module.exports = { purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'], darkMode: false, // or 'media' or 'class' theme: { extend: {}, }, variants: { extend: {}, }, plugins: [], };
postcss.config.js
파일 생성
module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, };
Tailwind 사용 방법 CSS를 작성할 때, HTML 태그에 Tailwind 클래스를 지정하여 스타일을 적용한다. 예를 들어,bg-blue-500
클래스를 지정하면 배경색이 파란색인 요소를 만들 수 있다.다음은 간단한 예제이다.
<div class="bg-blue-500 text-white p-4">안녕하세요!</div>
이 코드는 배경색이 파란색이고, 글자색이 흰색이며, 안쪽 여백이 4픽셀인
div
요소를 만드는 코드이다. bg-blue-500
클래스는 배경색을 파란색으로 지정하는 클래스이고, text-white
클래스는 글자색을 흰색으로 지정하는 클래스이다. p-4
클래스는 안쪽 여백을 4픽셀로 지정하는 클래스이다. 이와 같이 클래스를 조합하여 스타일을 적용할 수 있다.Notion 데이터 가져오기
Notion API를 이용하여 데이터를 가져온다.
react-notion
과react-notion-x
패키지를 설치한다.
npm install react-notion react-notion-x
src
폴더 안에pages
폴더와components
폴더를 생성한다.
pages
폴더 안에index.js
파일을 생성한다.
import React, { useEffect, useState } from 'react'; import { NotionRenderer } from 'react-notion'; import { notion } from '../config'; const Blog = () => { const [posts, setPosts] = useState([]); useEffect(() => { const fetchPosts = async () => { const response = await fetch( `https://api.notion.com/v1/databases/${notion.databaseId}/query`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Notion-Version': '2021-08-16', Authorization: `Bearer ${notion.secret}`, }, } ); const { results } = await response.json(); setPosts(results); }; fetchPosts(); }, []); return ( <> {posts.map((post) => ( <div key={post.id}> <h2>{post.properties.Name.title[0].text.content}</h2> <NotionRenderer blockMap={post.properties.Content.rich_text} /> </div> ))} </> ); }; export default Blog;
config.js
파일을 생성한다.
export const notion = { secret: process.env.REACT_APP_NOTION_API_SECRET, databaseId: process.env.REACT_APP_NOTION_BLOG_ID };
secret
와 databaseId
는 Notion API를 사용하기 위해 필요한 정보이다. secret
는 Notion API를 사용하기 위해 발급받은 Internal Integration Token을 입력하고, databaseId
는 가져올 데이터베이스의 ID를 입력한다. 이 정보들은 config.js
파일에 저장되어 있으며, React 앱에서 이 정보들을 사용하여 Notion API를 호출한다.Github 저장소에 배포하기
Github 저장소에 React 앱을 배포하는 방법은 다음과 같다.
github.com
에 로그인한다.
- 새로운 저장소를 생성한다.
- 터미널에서 다음 명령어를 입력하여 저장소를 클론한다.
git clone <https://github.com/>{사용자 이름}/{저장소 이름}.git
- 생성된 프로젝트 폴더로 이동한다.
cd {저장소 이름}
- 다음 명령어를 입력하여 프로젝트를 초기화한다.
npm install
- 프로젝트를 빌드한다.
npm run build
package.json
파일을 열어homepage
속성을 설정한다.
{ "name": "{프로젝트 이름}", "version": "0.1.0", "homepage": "https://{사용자 이름}.github.io/{저장소 이름}/", // ... }
- 다음 명령어를 입력하여
gh-pages
패키지를 설치한다.
npm install gh-pages --save-dev
package.json
파일에 다음 스크립트를 추가한다.
{ "name": "{프로젝트 이름}", "version": "0.1.0", "homepage": "https://{사용자 이름}.github.io/{저장소 이름}/", "scripts": { "predeploy": "npm run build", "deploy": "gh-pages -d build" }, // ... }
- 다음 명령어를 입력하여 앱을 배포한다.
npm run deploy
- 브라우저에서
https://{사용자 이름}.github.io/{저장소 이름}/
으로 접속하면 React 앱이 실행된다.
Vercel로 배포하기
Vercel을 이용하여 React 앱을 배포하는 방법은 다음과 같다.
vercel.com
에 로그인한다.
Import Project
버튼을 클릭한다.
From Git Repository
를 선택한다.
- Github 계정을 연동한다.
- 배포할 저장소를 선택한다.
Framework Preset
에서Create React App
을 선택한다.
- 필요한 환경 변수를 추가한다.
- 배포를 시작한다.
- 배포된 앱의 URL을 확인한다.
참고자료
긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 언제나 환영합니다.
#React