Skip to content

πŸ™Œ λ‚˜λ„ λ§Œλ“€μ–΄ λ³Έλ‹€! 개발 λΈ”λ‘œκ·Έ

License

Notifications You must be signed in to change notification settings

kimyouknow/kimyouknow.github.io

Repository files navigation

직접 λ§Œλ“€μ–΄λ³Έ Gatsby blog

blog

Home Page Β· Request Feature


πŸ™Œ μ†Œκ°œ

μ œκ°€ μ–΄λ–€ 생각을 가지고 κ°œλ°œν•˜κ³  μžˆλŠ”μ§€ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ λΈ”λ‘œκ·Έλ₯Ό κ°œλ°œν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이전뢀터 TIL에 ν•™μŠ΅ λ‚΄μš©μ„ μ •λ¦¬ν•˜κ³  μžˆμ—ˆλŠ”λ°, TIL은 μ‚°μž¬ λ˜μ–΄ μžˆλŠ” 지식을 μ € 만의 λ°©μ‹μœΌλ‘œ μ •λ¦¬ν•˜λ €λŠ” λͺ©μ μœΌλ‘œ μš΄μ˜ν•˜λ©° μ € 만의 μΈμ‚¬μ΄νŠΈλ₯Ό 담은 개발 λΈ”λ‘œκ·Έμ™€λŠ” κ΅¬λΆ„λ˜μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

개발 λΈ”λ‘œκ·Έλ₯Ό μœ„ν•œ μ—¬λŸ¬ ν”Œλž«νΌκ³Ό μ™„μ„±λœ stater νŒ¨ν‚€μ§€κ°€ μ‘΄μž¬ν•˜μ§€λ§Œ 직접 κ°œλ°œν•˜κΈ°λ‘œ κ²°μ‹¬ν–ˆμŠ΅λ‹ˆλ‹€. 직접 개발 λΈ”λ‘œκ·Έλ₯Ό μš΄μ˜ν•˜λŠ” κ³Όμ •μ—μ„œ 배포 이후 ν•„μš”ν•œ 뢀뢄을 κ²½ν—˜ν•  수 있고, 개발 κ³Όμ •μ—μ„œ 미쳐 ν™•μΈν•˜μ§€ λͺ»ν•œ 뢀뢄을 확인할 수 μžˆμ§€ μ•Šμ„κΉŒ κΈ°λŒ€ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 직접 μ„€κ³„ν•˜κ³  μ›ν•˜λŠ” κΈ°λŠ₯을 자유둭게 μΆ”κ°€ν•˜λ©° κ°œλ°œν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. λΈ”λ‘œκ·Έλ₯Ό κΎΈμ€€νžˆ κ΄€λ¦¬ν•˜κ³ , 버그λ₯Ό μˆ˜μ •ν•˜λ©΄μ„œ μ–»κ²Œ λ˜λŠ” κ²½ν—˜μ΄ 도움이 될 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

μ œκ°€ κ³ λ―Όν•˜κ³  문제λ₯Ό ν•΄κ²°ν–ˆλ˜ 과정이 λ‹€λ₯Έ μ‚¬λžŒλ“€μ—κ²Œ 도움될 수 있으면 ν•©λ‹ˆλ‹€.

πŸ’» 기술 μŠ€νƒ

✨ μ£Όμš”κΈ°λŠ₯

  • λ°˜μ‘ν˜• μ›Ή
  • 닀크λͺ¨λ“œ
  • μ½”λ“œ ν•˜μ΄λΌμ΄νŒ…
  • κΈ€ λͺ©μ°¨(Table Of Content) μžλ™ 생성
  • λŒ“κΈ€ 및 이λͺ¨μ§€ λ°˜μ‘ (giscus)
  • Configurable: blog-configλ₯Ό ν†΅ν•œ 개인 μ„€μ •
  • bio: μžκΈ°μ†Œκ°œ
  • seo
  • sitemap.xml, robots.txt μžλ™ 생성
  • Google Analytics 지원
  • 이미지 μ΅œμ ν™”
  • github action을 ν™œμš©ν•œ μžλ™ 배포

πŸ› νŠΈλŸ¬λΈ” μŠˆνŒ…

닀크λͺ¨λ“œ

λ°˜μ‘ν˜• μ›Ή

SEO, μ›Ήμ ‘κ·Όμ„±

기타

🚩 μ‹œμž‘ κ°€μ΄λ“œ

πŸŽ‰ μ„€μΉ˜ 및 배포

1. μ‹€ν–‰ν•˜κΈ°

# clone project
$ git clone https://github.com/kimyouknow/kimyouknow.github.io.git

# Install dependencies
$ yarn install

# Start development server
$ yarn dev

2. λ°°ν¬ν•˜κΈ°

2-1. λ‘œμ»¬μ—μ„œ μˆ˜λ™μœΌλ‘œ λ°°ν¬ν•˜κΈ°

Githubμ—μ„œ μ•„λž˜μ™€ 같이 μ„ΈνŒ… ν›„ μ›ν•˜λŠ” λΈŒλžœμΉ˜μ—μ„œ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ deploy λΉŒλ“œνŒŒμΌμ΄ μ˜¬λΌκ°€λ©΄μ„œ λ°°ν¬λ©λ‹ˆλ‹€.

  • setting -> pages -> Build and deployment -> source: Deploy from a branch
# deploy with gh-pages
$ yarn deploy
2-2. github action을 ν™œμš©ν•΄μ„œ μžλ™μœΌλ‘œ λ°°ν¬ν•˜κΈ°

Githubμ—μ„œ μ•„λž˜μ™€ 같이 μ„ΈνŒ… ν›„ μ›ν•˜λŠ” mainλΈŒλžœμΉ˜μ— pushν•˜λ©΄ λ°°ν¬λ©λ‹ˆλ‹€.

  • setting -> pages -> Build and deployment -> source: Github Actions
  • .github/workflows/gh-deploy.yml μ°Έκ³ 

βš™οΈ μ‹€ν–‰ μ „ λΈ”λ‘œκ·Έ 정보 μž…λ ₯

μœ„μ˜ λͺ…λ Ήμ–΄λ‘œ μ‹€ν–‰ν•˜λŠ”λ° λ¬Έμ œκ°€ μ—†μ—ˆλ‹€λ©΄ http://localhost:8000 μ—μ„œ λΈ”λ‘œκ·Έλ₯Ό ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λΈ”λ‘œκ·Έ 정보λ₯Ό μˆ˜μ •ν•˜κ³  μ‹Άλ‹€λ©΄ blog-config.jsμ—μ„œ ν•„μš”ν•œ 값을 λ³€κ²½ν•˜λ©΄ λ©λ‹ˆλ‹€.

1. λΈ”λ‘œκ·Έ 정보

{
  lang: "", // ko
  title: ``, //Yunho.blog
  author: '', // Yunho(kimyouknow)
  description: ``, // μ•ˆλ…•ν•˜μ„Έμš”. ν”„λ‘ νŠΈμ—”λ“œ 개발자 κΉ€μœ€ν˜Έμž…λ‹ˆλ‹€. κ³ λ―Όκ³Ό 문제 ν•΄κ²° 과정을 κ³΅μœ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  siteUrl: '', // https://kimyouknow.github.io/
  profileImage: ``, //  static κ²½λ‘œμ— μžˆλŠ” 사진 νŒŒμΌμ„ μž…λ ₯ν•˜λ©΄ ν”„λ‘œν•„ μ΄λ―Έμ§€λ‘œ λ°˜μ˜λ©λ‹ˆλ‹€. ex) profile-image.png
  mainOgImage :"", // static κ²½λ‘œμ— μ›ν•˜λŠ” 사진 νŒŒμΌμ„ μž…λ ₯ν•˜λ©΄  λ©”μΈνŽ˜μ΄μ§€μ˜ og-image νƒœκ·Έλ‘œ λ°˜μ˜λ©λ‹ˆλ‹€.
  keywords: [], // μ›ν•˜λŠ” ν‚€μ›Œλ“œλ₯Ό μ μ–΄μ£Όμ‹œλ©΄ keywords metaνƒœκ·Έμ— λ°˜μ˜λ©λ‹ˆλ‹€. ex) 'κ°œλ°œλΈ”λ‘œκ·Έ', 'λ¬Έμ œν•΄κ²°', 'gatsby'
  favicon: '', // static κ²½λ‘œμ— μ›ν•˜λŠ” 사진을 λ„£μ–΄μ£Όμ‹œλ©΄ favicon μ΄λ―Έμ§€λ‘œ λ°˜μ˜λ©λ‹ˆλ‹€. ex) /static/pencil.png
  social: {
    email: '', // kimyouknow@naver.com
    github: ``, //https://github.com/kimyouknow
    til: '', //https://github.com/kimyouknow/TIL
  },
}

2. λŒ“κΈ€ 정보

ν˜„μž¬ utteranceμ—μ„œ giscus둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ 섀정은 giscusλ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.

{
  data_repo: '',
  data_repo_id: '',
  data_category: '',
  data_category_id: '',
  data_mapping: '',
}

3. 기타 정보

검색 엔진 μ΅œμ ν™” 및 μ‚¬μ΄νŠΈ 뢄석을 μœ„ν•΄ ꡬ글 μ„œμΉ˜ μ½˜μ†”, Google μ• λ„λ¦¬ν‹±μŠ€, 넀이버 μ›Ή λ§ˆμŠ€ν„° λ„κ΅¬μ—μ„œ ν•„μš”ν•œ 정보λ₯Ό μ„ΈνŒ…ν•œ λ’€ μ•„λž˜ 섀정을 λ³€κ²½ν•˜μ…”μ•Ό ν•©λ‹ˆλ‹€.

{
  seo: {
    google: process.env.GATSBY_SEO_GOOGLE,
    naver: process.env.GATSBY_SEO_NAVER,
  },
  gtag: {
    ga: process.env.GATSBY_ANALYTICS_GOOGLE,
  },
}

ν™˜κ²½λ³€μˆ˜λ₯Ό 개발 ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„λž˜μ™€ 같이 .envνŒŒμΌμ— GATSBY_둜 μ‹œμž‘ν•˜λŠ” λ³€μˆ˜λ‘œ λ“±λ‘ν•΄μ£Όμ„Έμš”.

# env.development와 env.production에 섀정에 맞게 idλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.
GATSBY_SEO_GOOGLE=
GATSBY_SEO_NAVER=
GATSBY_ANALYTICS_GOOGLE=

ν™˜κ²½λ³€μˆ˜λ₯Ό 배포 ν™˜κ²½μ—μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 Github 섀정이 ν•„μš”ν•©λ‹ˆλ‹€.

- setting -> secrets and variables -> Actions secrets and variables ->  New secret
- New secret에 .envνŒŒμΌμ— μž‘μ„±ν•œ λ³€μˆ˜λ₯Ό key:value ν˜•μ‹μœΌλ‘œ μž…λ ₯

✏️ κΈ€ μž‘μ„±ν•˜κΈ°

글을 μž‘μ„±ν•˜κΈ° μœ„ν•΄ /contents 폴더 내뢀에 μ›ν•˜μ‹œλŠ” λΆ„λ₯˜μ— 맞게 디렉토리λ₯Ό μƒμ„±ν•œ λ’€ index.md을 μƒμ„±ν•΄μ£Όμ„Έμš”. index.md νŒŒμΌμ—λŠ” markdownν˜•μ‹μœΌλ‘œ μž‘μ„±ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

1. κΈ€ λͺ©μ°¨(Table Of Content)

κΈ€ λͺ©μ°¨λ₯Ό λ”°λ‘œ μž‘μ„±ν•  ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. gatsby-remark-autolink-headersκ°€ markdown의 hνƒœκ·Έ(h1, h2, h3 ...)λ₯Ό μžλ™μœΌλ‘œ 인식해 κΈ€ λͺ©μ°¨λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

2. λ§ˆν¬λ‹€μš΄ λ‚΄ 이미지 파일 μ‚½μž…

markdown μž‘μ„± 쀑 이미지λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” index.md와 같은 디렉토리에 이미지 νŒŒμΌμ„ μΆ”κ°€ ν•œ λ’€ μ•„λž˜μ™€ 같은 λ°©λ²•μœΌλ‘œ μ‚¬μš©ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

![이미지](./경둜/νŒŒμΌμ΄λ¦„.ν™•μž₯자)

3. 포슀트 meta 정보

index.md 파일 μƒλ‹¨μ—λŠ” meta 정보λ₯Ό μœ„ν•œ 섀정을 ν•΄μ£Όμ…”μ•Ό ν•©λ‹ˆλ‹€.

---
date: '' // μž‘μ„± λ‚ μ§œ (yyyy-mm-dd)
title: '' // 제λͺ©
categories: [] // μΉ΄ν…Œκ³ λ¦¬ ex) 'WEB', 'λ¬Έμ œν•΄κ²°'
summary: '' // description meta νƒœκ·Έ 및 κΈ€ λͺ©λ‘μ—μ„œ λ³΄μ—¬μ§ˆ 짧은 λ¬Έμž₯
thumbnail: './thumbnail.png'
---

πŸ“¦ 폴더 ꡬ쑰

.
β”œβ”€β”€ contents
β”‚   β”œβ”€β”€ category1
β”‚   └── category2
β”‚       └── post1
β”‚            β”œβ”€β”€ index.md
β”‚            └── image.png
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ Layout # ν”„λ‘œμ νŠΈ 전체 λ ˆμ΄μ•„μ›ƒ 관리
β”‚   β”œβ”€β”€ components
β”‚   β”‚   β”œβ”€β”€ Bio
β”‚   β”‚   β”œβ”€β”€ CategoryHeader
β”‚   β”‚   β”œβ”€β”€ Comment
β”‚   β”‚   β”œβ”€β”€ Footer
β”‚   β”‚   β”œβ”€β”€ GlobalNavigation
β”‚   β”‚   β”œβ”€β”€ PostDetail
β”‚   β”‚   β”œβ”€β”€ PostList
β”‚   β”‚   β”œβ”€β”€ SEO
β”‚   β”‚   └── Common # 곡톡 μ»΄ν¬λ„ŒνŠΈ
β”‚   β”œβ”€β”€ context # context api 관리
β”‚   β”œβ”€β”€ fonts
β”‚   β”œβ”€β”€ hooks # custom hooks
β”‚   β”œβ”€β”€ mocks # mock data
β”‚   β”œβ”€β”€ pages
β”‚   β”œβ”€β”€ styles
β”‚   β”œβ”€β”€ templates #포슀트 template
β”‚   β”œβ”€β”€ types
β”‚   └── utils
└── static # 이미지 파일

βœ… 남은 개발 λͺ©λ‘

핡심

  • : TOC
  • : ν—ˆμŠ€ν‚€ (컀밋 μ „ 린트 및 프리티어 μ‹€ν–‰)
  • : github action
  • : 헀더 κΈ€
  • : Bio
  • : 닀크λͺ¨λ“œ κ΅¬ν˜„
  • : SEO μ„€μ •, site meta
  • : About νŽ˜μ΄μ§€
  • : λ¦¬λ“œλ―Έ μž‘μ„±

μΆ”κ°€

  • : λ°˜μ‘ν˜• μ›Ή
  • : Read Time
  • : Google Analytics
  • : κ°„λ‹¨ν•œ λ°˜μ‘
  • : 쑰회수 ν‘œμ‹œ
  • : 검색 κΈ°λŠ₯
  • : μΉ΄ν…Œκ³ λ¦¬ 검색
  • : μ‹œλ¦¬μ¦ˆ 검색
  • : 이전 포슀트 , λ‹€μŒ 포슀트, μ΅œμ‹ ν¬μŠ€νŠΈ
  • : λ§žμΆ€λ²• 검사 μžλ™ν™” -> vscode-hanspell extension으둜 ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ‚¬μš©

About

πŸ™Œ λ‚˜λ„ λ§Œλ“€μ–΄ λ³Έλ‹€! 개발 λΈ”λ‘œκ·Έ

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published