210901 개발기둝: webpack을 μ•Œμ•„λ³΄μž

2021. 9. 1. 23:40γ†πŸ“” TIL

πŸŒ€  Webpack 의 λ“±μž₯λ°°κ²½

κ³Όκ±°μ—λŠ” index.html 에 슀크립트 νŒŒμΌμ„ 올렀 μ‚¬μš©ν–ˆλ‹€.

λ§Œμ•½ 3개의 js νŒŒμΌμ„ μ‚¬μš©ν•œλ‹€λ©΄ index.html 에 일일이 3개의 jsνŒŒμΌμ„ <script ...> </script> 이런 μ‹μœΌλ‘œ 등둝해야 ν–ˆλ‹€.

λ²ˆκ±°λ‘œμ›€λ„ λ¬Έμ œμ§€λ§Œ, μ΄λŸ°μ‹μœΌλ‘œ νŒŒμΌμ„ λ“±λ‘ν•˜λ©΄ μ „μ—­ μŠ€μ½”ν”„κ°€ μ˜€μ—Όλœλ‹€λŠ” 큰 λ¬Έμ œκ°€ μžˆλ‹€.

μ–΄λŠ λͺ¨λ“ˆ(js 파일)μ—μ„œ μ •μ˜ν•œ sum() ν•¨μˆ˜λŠ” κ³§λ°”λ‘œ μ „μ—­ ν•¨μˆ˜λ‘œ λ“±λ‘λ˜μ–΄ λ‹€λ₯Έ κ³³μ—μ„œλ„ μ‚¬μš©λ  수 μžˆμ§€λ§Œ,

λ§Œμ•½ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ λ™μΌν•œ μ΄λ¦„μ˜ ν•¨μˆ˜κ°€ 또 μ •μ˜λ˜λ©΄ κ±·μž‘μ„ 수 μ—†λŠ” μ—λŸ¬μ˜ λŠͺ에 λΉ μ§€κ²Œ λœλ‹€. μ˜ˆμΈ‘μ„ ν•  수 μ—†κ²Œ λœλ‹€.

 

κ·Έλ¦¬ν•˜μ—¬ λͺ¨λ“ˆ μ‹œμŠ€ν…œμ΄λž€ κ°œλ…μ΄ 두두등μž₯ν•œλ‹€. import ν‚€μ›Œλ“œλ‘œ ν•„μš”ν•œ λͺ¨λ“ˆλ§Œ κ°€μ Έμ˜¬ 수 μžˆμ–΄ 이전 처럼 예츑 λΆˆκ°€λŠ₯ν•œ μ—λŸ¬λ₯Ό λ§‰λŠ”λ° 일쑰할 수 μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ λͺ¨λ“ˆ μ‹œμŠ€ν…œμ˜ 또 λ‹€λ₯Έ λ¬Έμ œμ μ€ λΈŒλΌμš°μ € ν˜Έν™˜μ„±μ΄μ—ˆλ‹€. IE μ—μ„œλŠ” 이λ₯Ό μ§€μ›ν•˜μ§€ μ•Šμ•˜κΈ°μ—, 이λ₯Ό ν•΄κ²°ν•  λ‹€λ₯Έ 방법이 또 ν•„μš”ν•˜κ²Œ 됐닀.

 

κ°œλ°œμžλŠ” λΈŒλΌμš°μ €μ™€ λ¬΄κ΄€ν•˜κ²Œ λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜κ³ μž ν–ˆκ³  이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ webpack μ΄λž€ κ°œλ…μ΄ λ“±μž₯ν•œλ‹€.

(μ–΄λ–€ μ›λ¦¬λ‘œ λΈŒλΌμš°μ € ν˜Έν™˜μ„± 문제λ₯Ό ν•΄κ²°ν–ˆλŠ”μ§€λŠ” 쑰사가 ν•„μš”ν•˜λ‹€.)

 

✏️  μ›ΉνŒ©μ΄λž€

μ›ΉνŒ©μ€ μ—¬λŸ¬κ°œ νŒŒμΌμ„ ν•˜λ‚˜μ˜ 파일둜 ν•©μ³μ£ΌλŠ” λ²ˆλ“€λŸ¬(bundler)λ‹€. μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“  3개의 μ„œλ‘œ λ‹€λ₯Έ λͺ¨λ“ˆμ„ ν•˜λ‚˜λ‘œ ν•©μ³μ£ΌλŠ” 도ꡬ라 λ³Ό 수 μžˆλ‹€. μ„œλ‘œ λ‹€λ₯Έ μ—¬λŸ¬κ°œμ˜ λͺ¨λ“ˆμ΄ λ”± ν•˜λ‚˜μ˜ λͺ¨λ“ˆμ— μ˜μ‘΄μ„±μ„ κ°€μ Έ ν•΄λ‹Ή λͺ¨λ“ˆ λ‚΄λΆ€μ—μ„œ λͺ¨λ‘ import λœλ‹€λ©΄, κ·Έ λͺ¨λ“ˆμ΄ 전체 λͺ¨λ“ˆμ˜ μ‹œμž‘μ (entry point) 이 λœλ‹€. 일반적으둜 app.js κ°€ 이에 ν•΄λ‹Ήλœλ‹€.

 

πŸ“š  Webpack 의 3μš”μ†Œ [ mode, entry, output ]

webpack을 μ„€μ •ν•  λ•Œ 기본적으둜 webpack.config.js νŒŒμΌμ— ν•„μˆ˜μš”μ†Œ 3가지λ₯Ό μ„ΈνŒ…ν•œλ‹€. 

module λ­‰μΉ˜(bundler) κ°€ μ–΄λ–€ λͺ¨λ“œ(mode) 둜 λΉŒλ“œλ  것인지, μ‹œμž‘μ (entry) 이 어디인지, κ²°κ³Όλ¬Ό(output)은 μ–΄λŠ κ²½λ‘œμ— μ €μž₯될 것인지λ₯Ό μ„€μ •ν•˜λŠ” νŒŒμΌμ΄λ‹€.

 

βœ…  μ •λ¦¬ν•˜λ©΄,

μžλ°”μŠ€ν¬λ¦½νŠΈ λͺ¨λ“ˆμ΄ μ—¬λŸ¬ μ˜μ‘΄κ΄€κ³„λ₯Ό κ°€μ§€λŠ”λ°, μ—”νŠΈλ¦¬λŠ” μ˜μ‘΄κ΄€κ³„ λͺ¨λ“ˆμ˜ μ‹œμž‘μ μ„ λœ»ν•œλ‹€.

μ›ΉνŒ©μ€ μ‹œμž‘μ μ„ κΈ°μ€€μœΌλ‘œ λͺ¨λ“  λͺ¨λ“ˆμ„ μ°Ύμ•„ ν•˜λ‚˜μ˜ λ²ˆλ“€λ§ νŒŒμΌμ„ λ§Œλ“ λŠ”데 이λ₯Ό 아웃풋이라 ν•œλ‹€.