Daily/Today I Learned

22.08.22_TIL

ํ˜ธ๋ฐ€์ด 2022. 8. 22. 09:14

๐Ÿ“Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ์ „ Github ์„ธํŒ…์„ ๋ฐฐ์šฐ๋Š” ๋‚ ์ด๋‹ค. ์ด๋ฏธ ํ•œ ๋ฒˆ ํ•ด๋ดค์–ด๋„ ๋‹ค์‹œ ๊นŠ๊ฒŒ ํ•™์Šตํ•ด๋ณด์ž!

๐Ÿ“— ์˜ค๋Š˜ ํ•™์Šตํ•œ ๋‚ด์šฉ

Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ํ•„์š”ํ•œ ํŒŒ์ผ

  • README.md
    • ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
    • ํ”„๋กœ์ ํŠธ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์†Œ๊ฐœ
    • ํŒ€์› ์†Œ๊ฐœ
    • Wiki๋กœ ๋งํฌ
  • .gitignore
    • git์œผ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ ๋ชจ์Œ
    • secret token, ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์„ค์ • ํŒŒ์ผ์„ ๊ธฐ๋กํ•˜๋ฉด git์— push ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • LICENSE
    • ํ•ด๋‹น ์ฝ”๋“œ์˜ ๋ผ์ด์„ผ์Šค ํ‘œ๊ธฐ

Github ๊ธฐ๋Šฅ

  • Issue
    • ํ”„๋กœ์ ํŠธ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ œ์•ˆ, ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„ ์ œ๋ณดํ•˜๋Š” ๋“ฑ ํ”„๋กœ์ ํŠธ์˜ ์ด์Šˆ๋ฅผ ์ž‘์„ฑ
  • Milestone
    • ์ด์ •ํ‘œ ์—ญํ• , ํ…Œ์Šคํฌ ์นด๋“œ(Issue)๋ฅผ ๊ทธ๋ฃนํ™” ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • Pull Request
    • git branch์— ํ•ฉ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์š”์ฒญ
  • Project
    • Github ๋‚ด์—์„œ ์—…๋ฌด ๊ด€๋ฆฌ๋ฅผ ํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ๊ธฐ๋Šฅ

์นธ๋ฐ˜

  • ํŒ€๊ณผ ์กฐ์ง์ด ์ž‘์—…์„ ์‹œ๊ฐํ™”ํ•˜๊ณ , ์—…๋ฌด์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ๊ณผ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์—…๋ฌด ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•
  • ๋ฐ˜๋ฐ˜ ๋ณด๋“œ๋ฅผ ํ†ตํ•œ ์‹œ๊ฐํ™”
  • ์—…๋ฌด๋ฅผ ํ•˜๋‚˜์˜ ํ‹ฐ์ผ“์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ , ์—…๋ฌด ๋‹จ๊ณ„๋ฅผ ํ•˜๋‚˜์˜ ์—ด๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
  • ์ƒˆ๋กœ์šด ์—…๋ฌด๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ฐ€์žฅ ์™ผ์ชฝ ์—ด์— ์—…๋ฌด๊ฐ€ ์Œ“์ด๊ณ , ์—…๋ฌด๊ฐ€ ์ž˜ ์ง„ํ–‰๋˜๋ฉด ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ๋ฐฑ๋กœ๊ทธ → ํ•  ์ผ → ์ง„ํ–‰์ค‘ → ์™„๋ฃŒ

์นธ๋ฐ˜ ์‹ค์ฒœ๋ฒ•

  • ์—…๋ฌด ์‹œ๊ฐํ™”
  • ์ง„ํ–‰ ์ค‘์ธ ์—…๋ฌด ์ œํ•œ
  • ํ๋ฆ„ ๊ด€๋ฆฌ
  • ๋ช…ํ™•ํ•œ ํ”„๋กœ์„ธ์Šค ์ •์ฑ…
  • ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ๊ตฌํ˜„
  • ํ˜‘๋ ฅ์ ์ธ ๊ฐœ์„ , ์‹คํ—˜์ ์ธ ๋ฐœ์ „

Github ์ด์Šˆ

  1. Issue (task card) ์ƒ์„ฑ
  2. ํ…Œ์Šคํฌ ์ž‘์„ฑ
  3. ํ…Œ์Šคํฌ ์ผ์ • ์™„๋ฃŒ ํ›„ ์ด์Šˆ ๋‹ซ๊ธฐ

Github ์ด์Šˆ ํ…œํ”Œ๋ฆฟ ์นด๋“œ

  1. Settings ํด๋ฆญ
  2. Issue์˜ Set up templates๋ฅผ ํด๋ฆญ

Github ๋งˆ์ผ์Šคํ†ค

๊นƒํ—ˆ๋ธŒ ๋งˆ์ผ์Šคํ†ค์„ ์ด์Šˆ, PR ๊ทธ๋ฃน์˜ ์ง„์ฒ™๋„๋ฅผ ํ™•์ธํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

  1. Milestones ์ƒ์„ฑ
    1. Issue ํƒญ์„ ๋ˆ„๋ฅด๊ณ  Milestones๋ฅผ ๋ˆ„๋ฅธ๋‹ค.
    2. Create a Milestone ํ˜น์€ New milstone์„ ๋ˆ„๋ฅธ๋‹ค.
  2. Milestones ์„ธ๋ถ€ ๋‚ด์šฉ ์ž‘์„ฑ
  3. Milestones ์ƒ์„ฑ ํ™•์ธ

Project 

  1. Project ์ƒ์„ฑ
    1. Projects ํƒญ ์„ ํƒ ํ›„ Add project ํด๋ฆญ Go to the.... ํด๋ฆญ
    2. New Project ํด๋ฆญ
    3. ํ…œํ”Œ๋ฆฟ ์„ ํƒ ํ›„ Create ๋ฒ„ํŠผ ํด๋ฆญ
  2. Project ์ด๋ฆ„ ๋ฐ ์ ‘๊ทผ ์„ค์ •
    1. ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ Settings ํด๋ฆญ
    2. ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„๊ณผ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•˜๊ณ  Save ํด๋ฆญ
    3. ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ ํ™•์ธ
    4. ์„ค์ • ํŽ˜์ด์ง€ ์™ผ์ชฝ ํƒญ์— Manage access ํด๋ฆญ
    5. Base Role์„ Read๋กœ ๋ณ€๊ฒฝ
    6. Admin ๊ถŒํ•œ์œผ๋กœ ํŒ€์› ์ดˆ๋Œ€
  3. Issue ์—ฐ๊ฒฐํ•˜๊ธฐ
    1. #์œผ๋กœ ์ž์‹ ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ฐพ๊ธฐ
    2. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์„ ํƒ ํ›„ Issue, PR ์„ ํƒ
    3. Add selected items ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ item ์ถ”๊ฐ€
    4. ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž‘์„ฑํ•œ Issue๋“ค ์ถ”๊ฐ€ ํ™•์ธ
  4. Project ์„ค์ •
    1. ๊ฐ ์ด์Šˆ๋“ค์˜ ์ƒํƒœ ์„ค์ • Todo, In Progress, Done
    2. Labels, PR, Reviewers, Repository, Milestone ๋“ฑ ์นผ๋Ÿผ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
    3. ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ ๋ณด๊ธฐ ๊ฐ€๋Šฅ
    4. Assignees, Status, Milestone, Repository ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ
  5. Project ์ ์šฉ
    1. Projects ํƒญ Add project ํด๋ฆญ ์ƒ์„ฑํ•œ project ํด๋ฆญ

Git branch

  • ๊ธฐ์กด ๊ฐœ๋ฐœ์ค‘์ธ ๋ฉ”์ธ ๊ฐœ๋ฐœ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ๋ฉ”์ธ ๊ฐœ๋ฐœ ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
  • ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๋ณ€๊ฒฝํ•˜๊ธฐ (git switch)
# ๋ธŒ๋Ÿฐ์น˜ ์ƒ์„ฑ(switch)
git switch -c ๋ธŒ๋Ÿฐ์น˜๋ช…

# ๋ธŒ๋Ÿฐ์น˜ ์ƒ์„ฑ(checkout)
git checkout -b ๋ธŒ๋Ÿฐ์น˜๋ช…

# ๊ธฐ์กด์— ์žˆ๋˜ main ๋ธŒ๋Ÿฐ์น˜๋กœ ๋ณ€๊ฒฝ
git switch main
git checkout main

๋ธŒ๋žœ์น˜ ๋กœ์ปฌ์—์„œ ํ•ฉ์น˜๊ธฐ (git merge) 

# ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์ง„ํ–‰
git commit -m "์„ธ๋ถ€ ๊ธฐ๋Šฅ1"
git commit -m "์„ธ๋ถ€ ๊ธฐ๋Šฅ2"
git commit -m "๊ฐœ๋ฐœ ์™„๋ฃŒ"

# ๋จธ์ง€๋ฅผ ์œ„ํ•ด main ๋ธŒ๋Ÿฐ์น˜๋กœ ์ „ํ™˜
git switch main

# main ๋ธŒ๋Ÿฐ์น˜๋กœ feat/todo ๋ธŒ๋Ÿฐ์น˜ ๋ณ‘ํ•ฉ
git merge feat/todo

๋ธŒ๋žœ์น˜ Github์—์„œ ํ•ฉ์น˜๊ธฐ (git merge) 

# ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์ง„ํ–‰
git commit -m "์„ธ๋ถ€ ๊ธฐ๋Šฅ1"
git commit -m "์„ธ๋ถ€ ๊ธฐ๋Šฅ2"
git commit -m "๊ฐœ๋ฐœ ์™„๋ฃŒ"

# Github ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ํ‘ธ์‰ฌ
git push origin feat/todo

# Github์—์„œ Pull Request๋ฅผ ์ง„ํ–‰
# ๊ฒ€์ˆ˜ ํ›„ merge

๋ธŒ๋žœ์น˜ ์‚ญ์ œ (git branch -d ๋ธŒ๋Ÿฐ์น˜ ๋ช…)

Git flow

  • ๋Œ€๊ทœ๋ชจ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์ž‘ํ•˜์—ฌ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜๋ˆ„๊ณ , ๋‹ค์–‘ํ•œ ๋ฒ„์ „์„ ๋ฐฐํฌํ•ด์•ผ ํ•˜๋Š” ๋‹น์‹œ์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ๋Š” ์ ํ•ฉํ–ˆ์ง€๋งŒ, ๋น ๋ฅด๊ฒŒ ์ œ์ž‘ํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ณ  ๊ณ ๊ฐ์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ์• ์ž์ผํ•œ ๊ฐœ๋ฐœ ํŒ€์— ์ ์šฉํ•˜๊ธฐ์—๋Š” ๋ณต์žกํ–ˆ๋‹ค.
  • ๊ฐœ๋ฐœ ํ˜„์žฅ์˜ ์ƒํ™ฉ์— ๋งž๊ฒŒ Git flow๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

git ํ•ต์‹ฌ ๋ธŒ๋žœ์น˜

  • main: ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ธ์ œ๋“  ์ œํ’ˆ์œผ๋กœ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋žœ์น˜
  • dev: ๋‹ค์Œ ๋ฒ„์ „ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ์ค‘์ธ ๋ธŒ๋žœ์น˜
  • feature: ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, ๋ฆฌํŽ™ํ† ๋ง, ๋ฌธ์„œ ์ž‘์—…, ๋‹จ์ˆœ ์˜ค๋ฅ˜ ์ˆ˜์ • ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋žœ์น˜

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ „ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ

ํ•„์ˆ˜ํ•ญ๋ชฉ

  • Node.js
    • JS ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋ฒ—์–ด๋‚˜ ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” JS๋Ÿฐํƒ€์ž„์ด๋‹ค.
  • Node.js ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
    • ์—ฌ๋Ÿฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ชจ์•„ ์„ค์น˜, ์—…๊ทธ๋ ˆ์ด๋“œ, ์„ค์ •, ์‚ญ์ œ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํˆด์ด๋‹ค.(npm, yarn)
  • ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ / ํ˜•์ƒ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ + ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์„œ๋น„์Šค
    • Git์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , Github์™€ ๊ฐ™์€ ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์„œ๋น„์Šค๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
    • React (18๋ฒ„์ „ ์‚ฌ์šฉ ๊ถŒ์žฅ)
    • vue
    • Angular
  • CSS
    • CSS ํ”„๋ ˆ์ž„์›Œํฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)
      • CSS ๋ชจ๋“ˆ
      • Styled-Components
    • CSS ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜
      • BEM
      • Utility-First (Tailwind)
    • CSS ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•
      • CSS-inJS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅด ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌ: Styled-Component, Emotion
      • Utility-First (Tailwind CSS)
      • CSS ํŒŒ์ผ ๋”ฐ๋กœ ๊ด€๋ฆฌ
      • SASS ์‚ฌ์šฉ
      • UI ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ (Meterial UI, Chakra UI, Redix UI)
  • Create React App
    • ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ React SPA๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋ฌถ์–ด ์ œ๊ณตํ•˜๋Š” ํˆด์ฒด์ธ
  • ๋ฆฐํ„ฐ
    • ๋ฌธ๋ฒ• ์—๋Ÿฌ๋‚˜ ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ฐพ์•„์ฃผ๋Š” ํˆด์ด๋‹ค.
    • JS์—์„œ๋Š” eslint, prettier๊ฐ€ ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ  ๋งŽ์ด ์“ฐ์ด๋Š” ํˆด์ด๋‹ค.

์„ ํƒํ•ญ๋ชฉ

  • HTTP ์š”์ฒญ (ํ˜ผ์šฉ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ)
    • Fetch API & isomorphic-fetch
    • Axios
    • React Query
    • SWR
  • ์ƒํƒœ ๊ด€๋ฆฌ
    • Redux
    • Recoil
    • Zustand
    • React Context API
    • Mobx
  • TypeScript
    • ์ •์  ํƒ€์ž… ์–ธ์–ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์— ํƒ€์ž…์„ ์ง€์ •ํ•˜์—ฌ ํ•ด๋‹น ํƒ€์ž…์ด ์•„๋‹ˆ๋ฉด TypeScript๋ฅผ JS๋กœ ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  ์—๋Ÿฌ๋ฅผ ๋‚ด์–ด ๊ฒฌ๊ณ ํ•œ ๊ฐœ๋ฐœ์„ ๋•๋Š”๋‹ค.
    • ์ดˆ๊ธฐ ์„ค์ •์ด ์–ด๋ ต๊ณ  ํ•™์Šต์—๋„ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.
  • ๋ฒˆ๋“ค๋Ÿฌ
    • webpack
    • esbuild
    • vite
    • parcel
  • ํ…Œ์Šคํฌ ํ”„๋ ˆ์ž„์›Œํฌ
    • Jest, React Testing Library
    • Cypress

๐Ÿ“˜ ์ถ”๊ฐ€๋กœ ๊ณต๋ถ€ํ•  ๋‚ด์šฉ

Study์›๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„(๋ฉ”์ธ ํ”Œ์  ํ›„ ๋‹ค์‹œ์‹œ์ž‘)

๋‚˜๋งŒ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ ๊ตฌํ˜„  ํ•ด๋ณด๊ธฐ

pre-project (์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ)

  • ํŒŒํŠธ ๋‚˜๋ˆ ๋ณด๊ธฐ
  • ์ž๋ฃŒ ์ฐพ๊ธฐ

๐Ÿ“ ์ค‘์š”ํ•œ ๋‚ด์šฉ

  • Github

'Daily > Today I Learned' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

22.10.20_TIL  (0) 2022.10.21
22.08.23_TIL  (0) 2022.08.23
22.08.18_TIL  (0) 2022.08.18
22.08.17_TIL  (2) 2022.08.17
22.08.16_TIL  (0) 2022.08.16