π‘볡μ‘ν 'λΉ' μμ , λꡬλ λ°λΌ ν μ μλ λ§€μ° μ¬μ΄ λ°©λ²μΌλ‘ λλ΄κΈ°!
λͺ©μ°¨
- 'λΉ' μμ μ μ½κ² λ§λ€μ΄μΌ νλ μ΄μ
- ν΅μ¬ μμΉ 1: μμ
λ¨μν λ° μΈλΆν
- ν° μμ μ μμ λ¨κ³λ‘ λλλ λ°©λ²
- λΆνμν κ³Όμ μ κ±°νκΈ°
- ν΅μ¬ μμΉ 2: μλν λꡬμ νλͺ
ν νμ©
- κ°μ₯ μ¬μ΄ μλν λꡬ μ ν κΈ°μ€
- λ°λ³΅μ μΈ μμ μλν μ€μ μμ
- ν΅μ¬ μμΉ 3: λͺ
ννκ³ μΌκ΄λ μν¬νλ‘μ° κ΅¬μΆ
- μ±κ³΅μ μΈ 'λΉ' μν¬νλ‘μ° ν νλ¦Ώ
- μ€λ₯ λ°μ μ λμ² μ λ΅
- ν΅μ¬ μμΉ 4: λΉ λ₯Έ νΌλλ°± 루ν μ€μ
- 'λΉ' κ²°κ³Ό λͺ¨λν°λ§ μμ€ν ꡬμΆ
- νΌλλ°±μ λ°νμΌλ‘ μμ€ν κ°μ νκΈ°
1. 'λΉ' μμ μ μ½κ² λ§λ€μ΄μΌ νλ μ΄μ
'λΉ(Build)' μμ μ μννΈμ¨μ΄ κ°λ°, λ¬Έμ μμ±, λ³΄κ³ μ μμ± λ± λ€μν λΆμΌμμ νλ‘μ νΈμ μ΅μ’ κ²°κ³Όλ¬Όμ λ§λ€μ΄λ΄λ ν΅μ¬ κ³Όμ μ λλ€. νμ§λ§ 볡μ‘ν νκ²½ μ€μ , μλ§μ μμ‘΄μ±, κΉλ€λ‘μ΄ μ€ν¬λ¦½νΈλ‘ μΈν΄ μ’ μ’ μ λ¬Έκ°κ° μλλ©΄ μ κ·ΌνκΈ° μ΄λ €μ΄ μμμΌλ‘ μ¬κ²¨μ§λλ€. μ΄λ¬ν 볡μ‘μ±μ μκ° λλΉμ μ¦μ μ€λ₯λ₯Ό μ λ°νλ©°, κ²°κ³Όμ μΌλ‘ νλ‘μ νΈμ ν¨μ¨μ±μ ν¬κ² μ ν΄ν©λλ€. 'λΉ λ§€μ° μ¬μ΄ λ°©λ²'μ ꡬμΆνλ κ²μ λ¨μ§ νΈλ¦¬ν¨μ λμ΄, λͺ¨λ νμμ΄ λμΌν νμ§μ κ²°κ³Όλ¬Όμ μΌκ΄μ± μκ² λ§λ€μ΄λΌ μ μλλ‘ λ³΄μ₯νλ νλ‘μ νΈμ μμ μ±μ ν보νλ νμμ μΈ κ³Όμ μ λλ€. μ§μ ν ν¨μ¨μ±μ λͺ¨λ μ¬λμ΄ μ½κ² μ¬μ©ν μ μλ μμ€ν μμ μμλ©λλ€.
2. ν΅μ¬ μμΉ 1: μμ λ¨μν λ° μΈλΆν
κ°μ₯ λ¨Όμ ν μΌμ 볡μ‘ν΄ λ³΄μ΄λ 'λΉ' μμ μ μ΅λν λ¨μνκ³ μ΄ν΄νκΈ° μ¬μ΄ λ¨μλ‘ μͺΌκ°λ κ²μ λλ€. 볡μ‘ν λ¬Έμ λ₯Ό ν λ²μ ν΄κ²°νλ €κ³ νλ©΄ μ΄λμλΆν° μμν΄μΌ ν μ§ λ§λ§ν΄μ§λλ€.
ν° μμ μ μμ λ¨κ³λ‘ λλλ λ°©λ²
'λΉ' κ³Όμ μ κΈ°λ₯λ³, νΉμ μκ° μμλ³λ‘ λ Όλ¦¬μ μΌλ‘ λΆλ¦¬ν©λλ€. μλ₯Ό λ€μ΄, β μμ‘΄μ± μ€μΉ $\rightarrow$ β‘ μ½λ μ»΄νμΌ $\rightarrow$ β’ ν μ€νΈ μ€ν $\rightarrow$ β£ μ΅μ’ ν¨ν€μ§κ³Ό κ°μ΄ 4λ¨κ³λ‘ λλλ κ²μ λλ€. μ΄ κ° λ¨κ³λ λ 립μ μΌλ‘ μ€ν κ°λ₯νλ©°, ν λ¨κ³κ° μ€ν¨νλ©΄ λ€μ λ¨κ³λ‘ λμ΄κ°μ§ μλλ‘ κ΅¬μ‘°ννμ¬ μ€λ₯μ μμΈμ λΉ λ₯΄κ² νμ ν μ μκ² λ§λλλ€. κ° λ¨κ³κ° μλ£λ λλ§λ€ μ¬μ©μμκ² λͺ νν λ©μμ§λ₯Ό μ 곡νμ¬ μμ μ§ν μν©μ μ§κ΄μ μΌλ‘ μ μ μκ² ν΄μΌ ν©λλ€.
λΆνμν κ³Όμ μ κ±°νκΈ°
νμ¬ 'λΉ' μμ μμ λ°λμ νμνμ§ μμ μ μ°¨λ μμ‘΄μ±, νΉμ λ μ΄μ μ¬μ©λμ§ μλ λ κ±°μ μ΅μ μ κ³Όκ°νκ² μ κ±°ν©λλ€. μλ₯Ό λ€μ΄, νΉμ νκ²½μμλ§ νμν λλ²κ·Έ μ΅μ μ΄ λͺ¨λ 'λΉ'μ ν¬ν¨λμ΄ μλ€λ©΄, μ΄λ₯Ό λ³λμ μ΅μ μΌλ‘ λΆλ¦¬νκ³ κΈ°λ³Έ 'λΉ' κ³Όμ μμλ μ μΈν©λλ€. μ΄ κ³Όμ μ ν΅ν΄ 'λΉ' μκ°μ΄ λ¨μΆλκ³ , μμ€ν μ΄ λΆνμν 볡μ‘μ±μΌλ‘ μΈν΄ μ€μλν κ°λ₯μ±μ΄ μ€μ΄λλλ€. λ―Έλλ©λ¦¬μ¦μ μ μ©νμ¬ κ°μ₯ ν΅μ¬μ μΈ κΈ°λ₯λ§μ λ¨κΈ°λ κ²μ΄ 'λ§€μ° μ¬μ΄ λ°©λ²'μ μΆλ°μ μ λλ€.
3. ν΅μ¬ μμΉ 2: μλν λꡬμ νλͺ ν νμ©
μλμΌλ‘ λͺ λ Ήμ΄λ₯Ό μ λ ₯νκ±°λ μ¬λ¬ λ¨κ³λ₯Ό ν΄λ¦ν΄μΌ νλ μμ μ μλνμ λμμ λλ€. μ¬λμ΄ λ°λ³΅μ μΈ μμ μ νλ©΄ μ€μν νλ₯ μ΄ λμμ§λ―λ‘, λꡬλ₯Ό μ΄μ©ν΄ μΌκ΄μ±μ ν보ν΄μΌ ν©λλ€.
κ°μ₯ μ¬μ΄ μλν λꡬ μ ν κΈ°μ€
'λΉ λ§€μ° μ¬μ΄ λ°©λ²'μ μν μλν λꡬλ β μ€μΉ λ° μ€μ μ΄ κ°νΈνκ³ , β‘ λ²μ©μ μΈ μ€ν¬λ¦½νΈ μΈμ΄(μ: Python, Shell)λ₯Ό μ§μνλ©°, β’ λͺ λ Ήμ΄κ° μ§κ΄μ μ΄μ΄μΌ ν©λλ€. 볡μ‘ν μ μ© DSL(Domain Specific Language)μ΄ νμν λꡬ보λ€λ, μ€ν¬λ¦½νΈ νμΌ νλλ§μΌλ‘ μ 체 νλ‘μΈμ€λ₯Ό μ€νν μ μλ κ°λ¨ν λꡬλ₯Ό μ ννλ κ²μ΄ μ’μ΅λλ€. μλ₯Ό λ€μ΄, Makefiles, κ°λ¨ν Shell μ€ν¬λ¦½νΈ, νΉμ Gulpλ Webpackκ³Ό κ°μ λ²μ© νμ€ν¬ λ¬λλ₯Ό λͺ©μ μ λ§κ² μ΅μνμΌλ‘ νμ©νλ κ²μ΄ ν¨κ³Όμ μ λλ€. ν΅μ¬μ 'λꡬλ₯Ό λ°°μ°λ μκ°'λ³΄λ€ 'λΉλλ₯Ό λ§λλ μκ°'μ΄ λ μ§§μμΌ νλ€λ κ²μ λλ€.
λ°λ³΅μ μΈ μμ μλν μ€μ μμ
λ¨μ λ°λ³΅ μμ
(μ: νμΌ λ³΅μ¬, ν΄λ μμ±, λ²μ μ 보 μ
λ°μ΄νΈ)μ μ€ν¬λ¦½νΈ ν μ€λ‘ μ²λ¦¬λλλ‘ κ΅¬μ±ν©λλ€. μλ₯Ό λ€μ΄, build.shλΌλ νμΌμ λ§λ€κ³ , μ΄ νμΌ μμ λͺ¨λ μμ°¨μ μΈ λͺ
λ Ήμ΄λ₯Ό μμ±ν ν, μ¬μ©μλ ν°λ―Έλμ sh build.sh λͺ
λ Ήμ΄ νλλ§ μ
λ ₯νλ©΄ μ 체 'λΉ' κ³Όμ μ΄ μλ£λλλ‘ λ§λλλ€. νΉν νκ²½ μ€μ κ³Ό κ΄λ ¨λ λΆλΆμ μ€ν¬λ¦½νΈ λ΄μμ μλμΌλ‘ λ³μλ₯Ό μ€μ νκ³ μ²λ¦¬νκ² λ§λ€μ΄, μ¬μ©μκ° μ§μ νκ²½ λ³μλ₯Ό 건λ릴 νμκ° μκ² ν΄μΌ ν©λλ€. μ΄λ μ¬μ©μ κ°μ
μ μ΅μννμ¬ μ€λ₯λ₯Ό μμ² μ°¨λ¨νλ κ°μ₯ ν¨κ³Όμ μΈ λ°©λ²μ
λλ€.
4. ν΅μ¬ μμΉ 3: λͺ ννκ³ μΌκ΄λ μν¬νλ‘μ° κ΅¬μΆ
μ무리 μλνκ° μ λμ΄ μμ΄λ, 'λΉ' μμ μ μμμ κ·μΉμ΄ λͺ ννμ§ μμΌλ©΄ νΌλμ΄ λ°μν©λλ€. λͺ¨λ νμμ΄ λμΌν λ°©λ²μΌλ‘ 'λΉ' μμ μ μνν μ μλλ‘ νμ€νλ μ μ°¨κ° νμν©λλ€.
μ±κ³΅μ μΈ 'λΉ' μν¬νλ‘μ° ν νλ¦Ώ
κ°μ₯ μ¬μ΄ μν¬νλ‘μ°λ λ¨μΌ μ§μ
μ (Single Entry Point)μ κ°λ κ²μ
λλ€. μ¦, build, make, νΉμ npm run buildμ κ°μ λ¨ νλμ λͺ
λ Ήμ΄λ‘ λͺ¨λ 'λΉ' μμ
μ΄ μμλμ΄μΌ ν©λλ€. μ΄ λ¨μΌ λͺ
λ Ήμ΄λ₯Ό μ€ννλ©΄ λ΄λΆμ μΌλ‘ μμ μ μν λͺ¨λ μΈλΆνλ λ¨κ³(μ€μΉ, μ»΄νμΌ, ν
μ€νΈ, ν¨ν€μ§)κ° μμλλ‘ μ€νλ©λλ€. μ΄ μν¬νλ‘μ°λ λ¬Έμνλμ΄ λͺ¨λ νμ΄ μ κ·Όν μ μμ΄μΌ νλ©°, λ¬Έμμλ 'λΉ' μμ
μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμ λμ μμ μΆλ ₯λ¬Ό(νμΌ μμΉ, ν¬κΈ° λ±)μ΄ λͺ
μλμ΄μΌ ν©λλ€.
μ€λ₯ λ°μ μ λμ² μ λ΅
'λ§€μ° μ¬μ΄ λ°©λ²'μμ κ°μ₯ μ€μν κ²μ μ€λ₯κ° λ°μνμ λ μ¬μ©μκ° μ½κ² λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΄μΌ νλ€λ μ μ
λλ€. 'λΉ' μ€ν¬λ¦½νΈλ λꡬλ μ€λ₯κ° λ°μν μ§μ μμ λͺ
ννκ³ μ¬μ©μ μΉνμ μΈ λ©μμ§λ₯Ό μΆλ ₯ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, "νμΌ Aκ° μμ΄μ μ€ν¨νμ΅λλ€" λμ "π¨ μ€λ₯: νμ μμ‘΄μ± νμΌ A(./dependencies/A.txt)λ₯Ό μ°Ύμ μ μμ΅λλ€. [ν΄κ²° λ°©λ²: README.mdμ 'μ€μ ' μΉμ
3λ²μ μ°Έκ³ νμΈμ.]"μ κ°μ΄ ꡬ체μ μΈ μμΉμ ν΄κ²° λ°©λ²μ μ μν΄μΌ ν©λλ€. 볡μ‘ν κΈ°μ μ μ€λ₯ μ½λλ₯Ό μΌλ° μ¬μ©μμκ² λ
ΈμΆνλ κ²μ μ΅μνν΄μΌ ν©λλ€.
5. ν΅μ¬ μμΉ 4: λΉ λ₯Έ νΌλλ°± 루ν μ€μ
'λΉ' μμ μ΄ λλ¬μ λ μ±κ³΅ μ¬λΆλ₯Ό μ¦μ, κ·Έλ¦¬κ³ λͺ ννκ² μλ €μ£Όλ μμ€ν μ μ¬μ©μμ λΆμκ°μ ν΄μνκ³ μμ ν¨μ¨μ λμ λλ€.
'λΉ' κ²°κ³Ό λͺ¨λν°λ§ μμ€ν ꡬμΆ
μ±κ³΅μ μΈ 'λΉ'μ΄ μλ£λλ©΄, μ¬μ©μμκ² λ Ήμ λ°νμ 'β λΉλ μ±κ³΅!' λ©μμ§μ ν¨κ» μ΅μ’ κ²°κ³Όλ¬Όμ κ²½λ‘λ₯Ό νμν΄μΌ ν©λλ€. λ°λλ‘ μ€ν¨νμ λλ λΆμ λ°νμ 'β λΉλ μ€ν¨!' λ©μμ§μ ν¨κ» μ€λ₯ λ‘κ·Έμ ν΅μ¬ λΆλΆλ§μ κ°κ²°νκ² μμ½νμ¬ λ³΄μ¬μ€λλ€. μ΄ νΌλλ°±μ 'λΉ' κ³Όμ μ΄ λλλ μ¦μ μΆλ ₯λμ΄μΌ νλ©°, λΆνμν λ‘κ·Έλ μ 보λ μ¨κ²¨μ ν΅μ¬ λ©μμ§μ μ§μ€ν μ μλλ‘ ν©λλ€.
νΌλλ°±μ λ°νμΌλ‘ μμ€ν κ°μ νκΈ°
'λΉ λ§€μ° μ¬μ΄ λ°©λ²'μ ν λ² κ΅¬μΆνκ³ λλλ κ²μ΄ μλλΌ, μ§μμ μΈ κ°μ μ λμμ λλ€. 'λΉ' κ³Όμ μ€ κ°μ₯ μ€λ μκ°μ΄ 걸리λ λ¨κ³κ° 무μμΈμ§ μ£ΌκΈ°μ μΌλ‘ λΆμνκ³ (νλ‘νμΌλ§), κ·Έ λ¨κ³λ₯Ό μ΅μ ννμ¬ μκ°μ λ¨μΆν΄μΌ ν©λλ€. λν, νμλ€λ‘λΆν° "μ΄λ€ λΆλΆμ΄ κ°μ₯ μ΄λ €μ λμ§"μ λν νΌλλ°±μ μ κΈ°μ μΌλ‘ μμ§νκ³ , κ·Έ νΌλλ°±μ λ°νμΌλ‘ μ€ν¬λ¦½νΈλ μν¬νλ‘μ°λ₯Ό λμ± λ¨μννκ³ μ§κ΄μ μΌλ‘ κ°μ ν΄μΌ ν©λλ€. μ¬μ©μμ κ²½νμ μ΅μ°μ μΌλ‘ μκ°νλ©° μμ€ν μ μ§νμν€λ κ²μ΄ μ΄ 'λ§€μ° μ¬μ΄ λ°©λ²'μ μ₯κΈ°μ μΌλ‘ μ μ§νλ λΉκ²°μ λλ€.
(곡백 μ μΈ κΈμμ: 2000μ μ΄μ)
λ μμΈν μ°Έκ³ μλ£λ μλλ₯Ό μ°Έκ³ νμΈμ.
λ μμΈν μ°Έκ³ μλ£ λ³΄κΈ°