μλΉμ€λ₯Ό μν λ‘μ§ μμ±νκΈ°
λͺ©ν
μ΄νΈλμ νλ‘μ νΈλ μ€ μλΉμ€λ₯Ό μΌλνμ¬ μ§νν νλ‘μ νΈμκΈ°λλ¬Έμ, κ·Έμ λ§μΆμ΄ μ μ§λ³΄μλ₯Ό μν μ€κ³κ° νμνμ΅λλ€. λ, μ΄ν μλΉμ€μ νμ₯λ κ³ λ €ν΄μΌ νμ΅λλ€.
μ΄λ₯Ό λͺ¨λ κ³ λ €νμ¬ μꡬ 쑰건μ μκ°ν΄λ³΄μλ©΄
- μ μ§λ³΄μκ° μ©μ΄ν΄μΌνλ€. (μ€λ³΅λλ λ‘μ§μ μ΅λν νΌν΄μΌνλ€)
- μΆν μλΉμ€λ₯Ό νμ₯ν μ μμ΄μΌνλ€.
- μΈμμ΄ λ³κ²½λκ±°λ νλ μ¬λ¬κ°μ§ μ¬νμ λλΉν΄ λ¬Έμνλ₯Ό μ² μ ν μ§νν΄μΌνλ€.
νμλ€κ³Ό μ΄νΈλμ μλΉμ€λ₯Ό μ€λΉνλ©΄μ λ΄λ¦° κ²°λ‘ μ λ€μκ³Ό κ°μμ΅λλ€.
- λμμΈ μμ€ν μ ν΅ν΄ κ³΅ν΅ μ»΄ν¬λνΈλ₯Ό κ΄λ¦¬νμ¬ μ€λ³΅λλ μ»΄ν¬λνΈλ₯Ό μ΅λν νΌνλ€.
- λͺ¨λ Έλ ν¬ κ΅¬μ‘°λ₯Ό λμ νμ¬ μΆν μλΉμ€λ₯Ό νμ₯ν μ μλλ‘ νλ€.
- λμμΈ μμ€ν μ Storybookμ λμ νμ¬ μ»΄ν¬λνΈμ λν΄μ λ¬Έμνλ₯Ό μ§ννκ³ , λ Έμ μ ν΅ν΄ κ°λ° κΈ°λ‘μ λ¨κΈ΄λ€.
λͺ¨λ Έλ ν¬
μ°μ , λͺ¨λ Έλ ν¬λ₯Ό μ μ¬μ©νλκ°? μ λν΄μλΆν° μμλ³΄κ² μ΅λλ€.
λͺ¨λ Έλ ν¬λ, νλμ μ μ₯μλ₯Ό μλ―Ένλ ‘Monolithic Repository’μ μ€μλ§λ‘, λ§μ νλ‘μ νΈλ₯Ό λ¨μΌ μ μ₯μμμ κ΄λ¦¬νλ λ°©μμ λ§ν©λλ€.
λ¨μΌ μ μ₯μμμ μ¬λ¬ νλ‘μ νΈλ₯Ό κ΄λ¦¬ν¨μΌλ‘μ¨ μ¬λ¬κ°μ§ μ΄μ μ΄ μκΈ°λλ° μ΄λ λ€μκ³Ό κ°μ΅λλ€.
- νλ‘μ νΈλ₯Ό μμ±ν λ κΈ°λ³Έμ μΌλ‘ μΈν ν΄μΌ νλ μΌλ€μ΄ μ€μ΄λ λ€.
- ν¨ν€μ§μ μ€λ³΅ μ½λλ₯Ό μ€μΌ μ μλ€.
- κ°λ°μ κ²½νμ μΌκ΄μ μΌλ‘ μ μ§μμΌ μ€ μ μλ€.
- λ€λ₯Έ ν¨ν€μ§μ λ³κ²½μ¬νμ νμ νλλ° μ©μ΄νλ€.
κ·Έλ λ€κ³ ν΄μ λͺ¨λ Έλ ν¬κ° λ°λμ κΈ°μ‘΄μ λ°©μλ³΄λ€ νμ λμ λ°©λ²μ μλλλ€. λͺ¨λ Έλ ν¬λ λ€μκ³Ό κ°μ μν©μμ μ¬μ©νμ λ ν¨κ³Όμ μ λλ€.
- μ μ¬ν μ νμ μ§ν©μΌ λ
- μ¬λ¬ νλ‘μ νΈμ λ³νλ₯Ό νλμ νμ ν΄μΌ ν λ
- κ³΅ν΅ κΈ°λ₯μ μ¬μ¬μ©νλ κ΄λ ¨λ νλ‘μ νΈμ μ§ν©μΌ λ
μμ λ΄μ©μ μΆ©λΆν κ³ λ €νμ¬ λͺ¨λ Έλ ν¬μ λ©ν°λ ν¬λ₯Ό μ ννλ κ²μ΄ μ€μν©λλ€.
λͺ¨λ Έλ ν¬λ₯Ό ꡬννλ λ°©λ²μλ μ¬λ¬κ°μ§κ° μμ΅λλ€. νμ μμλ λͺ¨λ Έλ ν¬λ₯Ό κ΄λ¦¬ν λ μΌλ°μ μΌλ‘ turborepo λ lerna λ₯Ό μ¬μ©ν©λλ€.
μ΄νΈλμ λν μμ λ°©λ²μ μ¬μ©ν κΉ νμΌλ, λͺ¨λ Έλ ν¬λ₯Ό μ²μ μ μ©ν΄λ³΄λ κ²μ΄κΈ° λλ¬Έμ λͺ¨λ Έλ ν¬ νκ²½μ μ§μ ꡬμΆν΄λ³΄λκ² μ’λ€κ³ μκ°νκ³ , μλ£λ₯Ό μ°Ύμλ³Έ κ²°κ³Ό pnpm μμ workspace κΈ°λ₯μ ν΅ν΄ λͺ¨λ Έλ ν¬ νκ²½μ μ§μνλ€λ κ²μ μ μ μμμ΅λλ€.
νμ¬, μ΄νΈλμ μ pnpm workspace κΈ°λ°μΌλ‘ λͺ¨λ Έλ ν¬ νκ²½μ ꡬμ±νμΌλ©°, ν¨ν€μ§ 맀λμ λν pnpmμΌλ‘ μ¬μ©νκ² λμμ΅λλ€.
λͺ¨λ Έλ ν¬ νκ²½μμ μΌλ°μ μΌλ‘ μ¬μ©λλ ν¨ν€μ§ 맀λμ λ pnpmκ³Ό yarn-berry λ μ’ λ₯μΈλ°, yarn-berryμ κ²½μ° plug-n-playκΈ°λ₯μ ν΅ν΄ zero-install νκ²½μ ꡬμΆν μ μλ€λ μ μ 맀λ ₯μ μ΄μμΌλ, 3λ²μ κΉμ§ ghost dependencyλ¬Έμ κ° μμκ³ , ν΄λΉ λ΄μ©μ΄ 4λ²μ μΌλ‘ λ©μ΄μ μ λ°μ΄νΈκ° μ§νλλ©° ν΄κ²°λμλ€κ³ λ νλ yarn-berryμ PnPκ° Gitμ μ§μμ μΌλ‘ λΆνλ₯Ό μ€λ€λ λ΄μ©κ³Ό λͺ¨λ ν¨ν€μ§λ€μ΄ PnPλ₯Ό μ§μνμ§ μλλ€λ μ μμ pnpmμ μ ννκ² λμμ΅λλ€.
Yarn λμ pnpmμΌλ‘ λμ΄κ° 3κ°μ§ μ΄μ
λμμΈ μμ€ν
λμμΈ μμ€ν μ΄λ λμμΈ μμΉκ³Ό κ·κ²©, μ¬μ¬μ©ν μ μλ UI ν¨ν΄κ³Ό μ»΄ν¬λνΈ, μ½λλ₯Ό ν¬κ΄νλ μμ€ν μ λ§ν©λλ€.
λμμΈ μμ€ν μ ν¬κ² 3κ°μ§ μ λλ‘ λλλλ°
- UI κ°μ΄λλΌμΈ(μ€νμΌ κ°μ΄λ)
- UIλ₯Ό νμ€ννκ³ νλ©΄ κ°μ μΌκ΄μ±μ ν보νκΈ° μν κ°μ΄λμ λλ€.
- UX κ°μ΄λλΌμΈ
- μλΉμ€μ λΈλλ μΈ‘λ©΄μμ μ¬μ©μκ° μΌκ΄μ μ΄κ³ μ°¨λ³νλ κ²½νμ νλλ‘ νκΈ° μν κ°μ΄λμ λλ€.
- λμμΈ μμ€ν
- λμμΈ μμΉκ³Ό κ·κ²©, μ¬μ¬μ© κ°λ₯ν UI ν¨ν΄κ³Ό μ»΄ν¬λνΈ, μ½λλ₯Ό ν¬κ΄νλ μμ€ν μ λλ€.
μ΄νΈλμ μ κ²½μ° μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈμ μμ΄μ½ ν¨ν€μ§λ₯Ό λμμΈ μμ€ν μ μΆκ°νκ³ , μ΄λ₯Ό ν΅ν΄ μ€λ³΅λλ μ½λλ₯Ό μ€μ΄κ³ μ¬μ©μμκ² μΌκ΄μ μΈ κ²½νμ μ£Όκ³ μ νμ΅λλ€.
μ΄νΈλμ μ κ²½μ° νμ¬ μλΉμ€μ€μΈ λ΄μ€λ ν° μλΉμ€ μ΄μΈμλ μΆν λ°±μ€νΌμ€μ κ°μ μλΉμ€λ₯Ό κ³ννκ³ μμκΈ° λλ¬Έμ μ¬μ©μμκ² μΌκ΄μ μΈ κ²½νμ μ£Όλ κ²μ΄ μ€μνλ€κ³ μκ°νμ΅λλ€.
λ, μ΄λ κ² μμ±λ μ»΄ν¬λνΈμ λν΄μ Storybookμ ν΅ν΄ λ¬Έμνλ₯Ό μ§ννμ΅λλ€. μ΄λ₯Ό ν΅ν΄ μΆν λμμ΄λμ κ°μ λΉκ°λ°μ μ§κ΅°κ³Ό μν΅ν λ μ΄λ €μμ΄ μλλ‘ νκ³ , κ°λ°μ μλ‘ μ°Έμ¬νλ μ¬λλ€λ κ°μ΄λλ₯Ό ν΅ν΄ μ½κ² μ»΄ν¬λνΈλ₯Ό μ¬μ©νλλ‘ νκ³ μ νμ΅λλ€.
κ·Έλ¦¬κ³ μμ±λ Storybookλ¬Έμλ chromatic μλΉμ€λ₯Ό ν΅ν΄ λ°°ν¬νκ³ , μ΄λ₯Ό Github Action μ ν΅ν΄ CD νμ΄νλΌμΈμ ꡬμΆνμ¬ μ΅μ μ λ΄μ©μ λ°μνλλ‘ νμ΅λλ€.
UI / AspectRatio / Aspect Ratio Default
Storybookμ chromaticμ ν΅ν μ»΄ν¬λνΈ ν μ€νΈλ μ§μνλλ°, μ΄νΈλμ μλΉμ€λ μΆν ν μ€νΈ λ‘μ§μ μΆκ°λ₯Ό ν΅ν΄ DSμ 컀λ²λ¦¬μ§ μνλ₯Ό κ°μ ν μμ μ΄λ©°, shadcn/uiκΈ°λ°μΌλ‘ λμ΄μλ μ»΄ν¬λνΈ λν μ체컴ν¬λνΈλ‘ κ΅μ²΄ν μμ μ λλ€.
μ¨λνν° μμ€ν μ ν΅ν μ¬μ©μ κ²½ν κ°μ νκΈ°
μ¬κΈ°μ μΆκ°μ μΌλ‘ μ¨λνν° μμ€ν μ ν΅ν΄μ μ¬μ©μμ κ²½νμ κ°μ νκ³ μ νμ΅λλ€.
Sentryλ₯Ό νμ¬νμ¬ μλ¬λ₯Ό λ‘κΉ νκ³ , μλ¬μ λν λν μΌν μ 보λ₯Ό λ°μ μλ¬λ₯Ό μμ νκ³ μμ΅λλ€. μ΄λ μ΄ν νλ‘ νΈμλ μλΉμ€μ λ‘λ λ°Έλ°μ±μ κ³ λ €νμ¬ μλ¬λ₯Ό μ’ ν©μ μΌλ‘ λ‘κΉ ν μ μλλ‘ κ΅¬μΆν΄λμ κ²μ λλ€.
Sentryμμλ νΉν μλ¬κ° λν μΌνκ² λ‘κΉ λμ΄ μ΄λ€ νκ²½μμ μλ¬κ° λ°μνλμ§λ₯Ό μ½κ² νμΈν μ μμ΅λλ€.
μΈμ 리νλ μ΄ κΈ°λ₯μ ν΅ν΄μ μ νν μ΄λ€ μν©μμ μλ¬κ° λ°μνλμ§λ νμΈν μ μμ΅λλ€.
μλ¬ λ°μμμλ μ¬λκ³Ό μλ¦Ό μ°λμ€μ μ ν΄λμ΄ μ¬λ μλ¦Όμ ν΅ν΄ νλ‘λμ μμ μλ¬κ° λ°μνμμ λΉ λ₯΄κ² μΈμ§ν μ μμ΅λλ€.
μ΄μΈμλ μ±λν‘ μ ν΅ν΄ μΌλ° μ μ μκ² λ¬Έμμ νΌλλ°±μ λ°μ μ μ μ μ¬μ©μ±μ κ°μ νμ΅λλ€.
κΈ°μ‘΄μλ μλΉμ€μ λ¬Έμλ₯Ό νλ €λ©΄ μΌλ° μ μ μκ²λ μ κ·Όμ±μ΄ λ¨μ΄μ§λ κΉνλΈ μ΄μλ, μΈμ λ΅μ₯μ΄ μ¬μ§ κΈ°μ½μ΄ μλ μ΄λ©μΌμ μ¬μ©ν΄μΌνμ§λ§, μ±λν‘μ μΆκ°ν¨μΌλ‘μ¨ μ€μκ°μΌλ‘ λ¬Έμλ₯Ό λ°κ³ ν΄λΉ λ΄μ©μ λν΄ λ΅λ³ν μ μκ² λμμ΅λλ€.
μ°Έκ³
https://yozm.wishket.com/magazine/detail/1830/
https://medium.com/musinsa-tech/journey-of-a-frontend-monorepo-8f5480b80661