[μλ°μ€ν¬λ¦½νΈ] μΉν©μ΄λ?
μΉν©(Webpack)μ μλ°μ€ν¬λ¦½νΈ(JS) μ ν리μΌμ΄μ μ μν μ μ λͺ¨λ λ²λ€λ¬μ λλ€. μΉ μ ν리μΌμ΄μ μ ꡬμ±νλ μμ(HTML, CSS, μ΄λ―Έμ§, JS νμΌ λ±)μ λͺ¨λ λͺ¨λλ‘ λ³΄κ³ , μ΄λ¬ν λͺ¨λλ€μ μμ‘΄μ± κ·Έλνλ‘ λ§λ€μ΄ νλ λλ μ¬λ¬ κ°μ λ²λ€λ‘ κ²°ν©νλ λꡬμ λλ€. μΉν©μ μ¬μ©ν¨μΌλ‘μ¨ κ°λ°μλ μ ν리μΌμ΄μ μ λͺ¨λ λ°©μμΌλ‘ ꡬμ±ν μ μκ³ , μ΅μ’ μ μΌλ‘ λΈλΌμ°μ μμ μ¬μ©ν μ μλ ννλ‘ μμλ€μ λ²λ€λ§ν μ μμ΅λλ€.
μΉν©μ μ£Όμ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€:
- λ‘λ(Loaders): μΉν©μ μ€μ§ μλ°μ€ν¬λ¦½νΈμ JSON νμΌλ§ μ΄ν΄ν μ μμ΅λλ€. λ‘λλ₯Ό μ¬μ©νλ©΄ μΉν©μ΄ λ€λ₯Έ νμ μ νμΌλ€μ μ²λ¦¬νμ¬ λͺ¨λλ‘ λ³νν μ μκ² ν©λλ€. μλ₯Ό λ€μ΄, CSS, μ΄λ―Έμ§, HTML νμΌλ€μ μλ°μ€ν¬λ¦½νΈ λͺ¨λλ‘ λ³νν μ μμ΅λλ€.
- νλ¬κ·ΈμΈ(Plugins): λ‘λκ° νμΌ λ¨μλ‘ μμ μ μ²λ¦¬νλ€λ©΄, νλ¬κ·ΈμΈμ λ²λ€ λ¨μλ‘ μμ μ μ²λ¦¬ν©λλ€. νλ¬κ·ΈμΈμ μ¬μ©νμ¬ λ²λ€ μ΅μ ν, μμ° κ΄λ¦¬, νκ²½ λ³μ μ£Όμ λ± λ€μν μμ μ μνν μ μμ΅λλ€.
- λͺ¨λ(Module): μΉν©μμ λͺ¨λμ μΉ μ ν리μΌμ΄μ μ ꡬμ±νλ κΈ°λ³Έ λ¨μμ λλ€. μλ°μ€ν¬λ¦½νΈ νμΌ μΈμλ CSS, μ΄λ―Έμ§, ν°νΈ λ± μΉν©μ΄ μ΄ν΄ν μ μκ² λ³νλ λͺ¨λ νμΌλ λͺ¨λλ‘ κ°μ£Όλ©λλ€.
- μνΈλ¦¬(Entry): μνΈλ¦¬λ μΉν©μ΄ μ΄λ€ λͺ¨λμ μ¬μ©νμ¬ μμ‘΄μ± κ·Έλνλ₯Ό μμν κ²μΈμ§λ₯Ό μλ €μ£Όλ μ§μ μ λλ€. κΈ°λ³Έμ μΌλ‘ ./src/index.jsκ° μνΈλ¦¬ ν¬μΈνΈλ‘ μ€μ λμ΄ μμ§λ§, μ€μ μ ν΅ν΄ λ³κ²½ν μ μμ΅λλ€.
- μμν(Output): μμνμ μΉν©μ΄ μμ±ν λ²λ€μ μ΄λμ λ°°μΉν κ²μΈμ§λ₯Ό μ μν©λλ€. κΈ°λ³Έμ μΌλ‘ ./dist/main.jsμ κ²°κ³Όλ¬Όμ΄ μμ±λμ§λ§, μ΄ λν μ€μ μ ν΅ν΄ λ³κ²½ν μ μμ΅λλ€.
μΉν©μ λͺ¨λ νλ‘ νΈμλ κ°λ°μμ μ€μν μν μ νλ©°, νΉν SPA(Single Page Application)λ λκ·λͺ¨ νλ‘μ νΈμμ μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ μ΅μ ννλ λ° νμμ μΈ λꡬμ λλ€.