μ κ° μ΄λ€ μκ°μ κ°μ§κ³ κ°λ°νκ³ μλμ§ λνλ΄κΈ° μν΄ λΈλ‘κ·Έλ₯Ό κ°λ°νκ² λμμ΅λλ€. μ΄μ λΆν° TILμ νμ΅ λ΄μ©μ μ 리νκ³ μμλλ°, TILμ μ°μ¬ λμ΄ μλ μ§μμ μ λ§μ λ°©μμΌλ‘ μ 리νλ €λ λͺ©μ μΌλ‘ μ΄μνλ©° μ λ§μ μΈμ¬μ΄νΈλ₯Ό λ΄μ κ°λ° λΈλ‘κ·Έμλ ꡬλΆλμ΄μΌ νλ€κ³ μκ°ν©λλ€.
κ°λ° λΈλ‘κ·Έλ₯Ό μν μ¬λ¬ νλ«νΌκ³Ό μμ±λ stater ν¨ν€μ§κ° μ‘΄μ¬νμ§λ§ μ§μ κ°λ°νκΈ°λ‘ κ²°μ¬νμ΅λλ€. μ§μ κ°λ° λΈλ‘κ·Έλ₯Ό μ΄μνλ κ³Όμ μμ λ°°ν¬ μ΄ν νμν λΆλΆμ κ²½νν μ μκ³ , κ°λ° κ³Όμ μμ λ―Έμ³ νμΈνμ§ λͺ»ν λΆλΆμ νμΈν μ μμ§ μμκΉ κΈ°λνμ΅λλ€. λν, μ§μ μ€κ³νκ³ μνλ κΈ°λ₯μ μμ λ‘κ² μΆκ°νλ©° κ°λ°νκ³ μΆμμ΅λλ€. λΈλ‘κ·Έλ₯Ό κΎΈμ€ν κ΄λ¦¬νκ³ , λ²κ·Έλ₯Ό μμ νλ©΄μ μ»κ² λλ κ²½νμ΄ λμμ΄ λ κ²μ΄λΌκ³ μκ°ν©λλ€.
μ κ° κ³ λ―Όνκ³ λ¬Έμ λ₯Ό ν΄κ²°νλ κ³Όμ μ΄ λ€λ₯Έ μ¬λλ€μκ² λμλ μ μμΌλ©΄ ν©λλ€.
- λ°μν μΉ
- λ€ν¬λͺ¨λ
- μ½λ νμ΄λΌμ΄ν
- κΈ λͺ©μ°¨(Table Of Content) μλ μμ±
- λκΈ λ° μ΄λͺ¨μ§ λ°μ (giscus)
- Configurable: blog-configλ₯Ό ν΅ν κ°μΈ μ€μ
- bio: μκΈ°μκ°
- seo
- sitemap.xml, robots.txt μλ μμ±
- Google Analytics μ§μ
- μ΄λ―Έμ§ μ΅μ ν
- github actionμ νμ©ν μλ λ°°ν¬
λ€ν¬λͺ¨λ
λ°μν μΉ
SEO, μΉμ κ·Όμ±
- SEO, μΉ μ κ·Όμ±
- Slackμ λ©ν νκ·Έκ° μ μ©λμ§ μλ λ²κ·Έ μμ
- SEO μ»΄ν¬λνΈ λ¦¬ν©ν λ§ λ° og:image μλ¬ μμ
κΈ°ν
# clone project
$ git clone https://github.com/kimyouknow/kimyouknow.github.io.git
# Install dependencies
$ yarn install
# Start development server
$ yarn dev
Githubμμ μλμ κ°μ΄ μΈν ν μνλ λΈλμΉμμ μλ λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄ deploy λΉλνμΌμ΄ μ¬λΌκ°λ©΄μ λ°°ν¬λ©λλ€.
- setting -> pages -> Build and deployment -> source:
Deploy from a branch
# deploy with gh-pages
$ yarn deploy
Githubμμ μλμ κ°μ΄ μΈν ν μνλ mainλΈλμΉμ pushνλ©΄ λ°°ν¬λ©λλ€.
- setting -> pages -> Build and deployment -> source:
Github Actions
- .github/workflows/gh-deploy.yml μ°Έκ³
μμ λͺ λ Ήμ΄λ‘ μ€ννλλ° λ¬Έμ κ° μμλ€λ©΄ http://localhost:8000 μμ λΈλ‘κ·Έλ₯Ό νμΈνμ€ μ μμ΅λλ€.
λΈλ‘κ·Έ μ 보λ₯Ό μμ νκ³ μΆλ€λ©΄ blog-config.js
μμ νμν κ°μ λ³κ²½νλ©΄ λ©λλ€.
{
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: '', // [email protected]
github: ``, //https://github.com/kimyouknow
til: '', //https://github.com/kimyouknow/TIL
},
}
νμ¬ utteranceμμ giscusλ‘ λ³κ²½νμ΅λλ€. μμΈν μ€μ μ giscusλ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ.
{
data_repo: '',
data_repo_id: '',
data_category: '',
data_category_id: '',
data_mapping: '',
}
κ²μ μμ§ μ΅μ ν λ° μ¬μ΄νΈ λΆμμ μν΄ κ΅¬κΈ μμΉ μ½μ, 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νμμΌλ‘ μμ±νμλ©΄ λ©λλ€.
κΈ λͺ©μ°¨λ₯Ό λ°λ‘ μμ±ν νμ μμ΅λλ€. gatsby-remark-autolink-headersκ° markdownμ hνκ·Έ(h1, h2, h3 ...)λ₯Ό μλμΌλ‘ μΈμν΄ κΈ λͺ©μ°¨λ₯Ό μμ±ν©λλ€.
markdown μμ± μ€ μ΄λ―Έμ§λ₯Ό μ¬μ©νκΈ° μν΄μλ index.mdμ κ°μ λλ ν 리μ μ΄λ―Έμ§ νμΌμ μΆκ° ν λ€ μλμ κ°μ λ°©λ²μΌλ‘ μ¬μ©νμλ©΄ λ©λλ€.
![μ΄λ―Έμ§](./κ²½λ‘/νμΌμ΄λ¦.νμ₯μ)
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μΌλ‘ νμν λλ§λ€ μ¬μ©