Webpack5 μ€μ νκΈ° (ESM)
νμ¬μμ Javascript μ© μλΉμ€ SDKλ₯Ό κ°λ°νλ©΄μ μ€μ νλ webpack5 μ€μ νμΌμ κΈ°λ‘νλ€. μ€λμ μ μ κΉ μ ν΄λ³΄μλκ² webpack2 λ²μ μ΄μλλ° μ΄λμ 5κΉμ§ λμλ€. μκ³ μ¬μ©νλκ² μλλ€λ³΄λ μ°λ©΄μ μ λ₯Ό λ¨Ήμλ€…π₯Ίπ₯Ίπ₯Ί
Webpack5 μ€μ νκΈ° (ESM μ¬μ©)
νμ¬μμ κ°λ°ν SDKλ CJS(CommonJS)
μμ ESM(ECMAScript Module)
λͺ¨λ λ°©μμ μ¬μ©νμ¬ κ°λ°νλ€. ESM
λͺ¨λ λ‘λ μ¬μ©νκΈ° μν΄ package.json
μ μλ μ€μ μ μΆκ°νλ€.
package.json
|
|
μλ κΈμμλ CJSκ° κΈ°λ³Έκ°μ΄κΈ° λλ¬Έμ λΌμ΄λΈλ¬λ¦¬μ κ²½μ° CJSλ‘ κ°λ°νλ κ²μ μΆμ²νκ³ μλ€.
μ€μΉ λΌμ΄λΈλ¬λ¦¬
|
|
webpack-merge
- μΉν© μ€μ μ νλλ‘ λ³ν©ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬. μΉν© μ€μ μ κ°λ°μ©κ³Ό λ°°ν¬μ©μΌλ‘ λλκΈ° μν΄ μ μ©νλ€.
- webpack-stream
- νμ€ν¬ λ¬λλ
gulp
λ₯Ό μ¬μ©νκ³ μλ€. gulpμμ μΉν©μ λͺ¨λλ§μμ μ μΆκ° νκΈ° μν΄ μ€μΉνλ€.
- νμ€ν¬ λ¬λλ
webpack.config.js
|
|
target
- μΉν©μ μ¬λ¬ νκ²½κ³Ό νμΌμΌλ‘ μ»΄νμΌ ν μ μλ€.
- Targets|webpack
entry
entry
λ μ ν리μΌμ΄μ μ λ²λ€λ¦¬ν λ νλ‘μΈμ€λ₯Ό μμν μ§μ μ΄λ€.- Entry and Context|webpack
output
output
μ μ»΄νμΌ λ λ²λ€νμΌκ³Ό 리μμ€λ₯Ό μ΄λ κ²½λ‘μ μ΄λ€ μ΄λ¦μΌλ‘ μμ±ν μ§ μ§μ ν μ μλ€.entry
λ μ¬λ¬ μ§μ μ΄ μμ μ μμ§λ§output
μ νλμ ꡬμ±λ§ μ§μ ν μ μλ€.- Output|webpack
resolve
resolve
μ΅μ μ λͺ¨λμ ν΄μνλ λ°©μμ μ§μ ν μ μλ€.
resolve.modules
- λͺ¨λμ ν΄μν λ κ²μν λλ ν°λ¦¬λ₯Ό μΉν©μ μλ €μ€λ€. μλκ²½λ‘λ nodeκ° νμ¬ λλ ν°λ¦¬μ μμ λλ ν°λ¦¬λ₯Ό ν΅ν΄
node_modeuls
λ₯Ό κ²μνλ λ°©λ²κ³Ό μ μ¬νκ² κ²μλλ©°, μ λκ²½λ‘λ μ€μ§ μ£Όμ΄μ§ λλ ν°λ¦¬μμλ§ κ²μνλ€.
webpack.config.js
|
|
webpack.config.js
|
|
resolve.fallback
webpack5μμλ Node.js μ½μ΄ λͺ¨λμ λν΄ μλ polyfillμ μ 곡νμ§ μλλ€. κ·Έλ¬λ―λ‘ λΈλΌμ°μ μμ μ€νλλ μ½λμμ μ¬μ©νλ κ²½μ° npm λͺ¨λμ μ§μ μ€μΉνκ³ ν¬ν¨ν΄μΌ νλ€.
λ€μμ webpack 5 μ΄μ μ webpackμ΄ μ¬μ©ν polyfill λͺ©λ‘μ΄λ€. νμ¬μμλ λͺ¨λ μ€μ νμΌλ ESM λ°©μμΌλ‘ webpack.conf.js
νμΌ λν ESMμΌλ‘ μμ±λμλ€. ESMμ κ²½μ° μλμ κ°μ΄ μ€μ νλ€.
|
|
|
|
To Do
- CJS, ESM