π λͺ¨λ λ²λ€λ¬(module Bundler)
λͺ¨λ(module)μ΄λ, νλ‘κ·Έλλ°μ΄λΌλ κ΄μ μμ κΈ°λ³Έμ μΌλ‘ '본체μ λν λ 립λ νμ λ¨μ' ( μ¦, νλ‘κ·Έλ¨μ ꡬμ±νλ ꡬμ±μμ μ€ νλμ ꡬμ±μμμ λ¨μλ₯Ό μ΄μΌκΈ° νλ€.)
μΉ μ ν리μΌμ΄μ μ κ·λͺ¨κ° μ μ°¨ 컀μ§λ©΄μ νμΌμ μλ μ μ μ»€μ Έ λ°μνλ λ¬Έμ μ λ€μ΄ μ겨λ¬λλ°,
λͺ¨λκ°μ μ€μ½νκ° κ΅¬λΆμ΄ λμ§ μμ λ€λ₯Έ νμΌμ μν₯μ λΌμΉλ μΌμ΄ λ°μνκ³ λ, νμΌμ μμ΄ λ§μμ§λ©΄μ λ§μ νμΌμ μλ΅νλλ° λ€μ λ§μ μκ°μ΄ μμλλ μΌμ΄ λ°μνκΈ°λ νμμ΅λλ€.
μ΄μκ°μ λ¬Έμ λ€μ ν΄κ²°νκΈ° μν΄ λ²λ€λ¬(Bundler) κ° λ±μ₯νκ² λ κ²μ λλ€.
μ¦, λͺ¨λ λ²λ€λ¬λ μ¬λ¬κ°λ‘ λλμ΄ μλ νμΌλ€μ νλμ νμΌλ‘ λ¬Άμ΄μ£Όλ μν μ ν¨μΌλ‘μ¨ μμκ°μ λ¬Έμ λ€μ ν΄κ²°ν΄ μ£Όλ μν μ ν©λλ€.
λνμ μΌλ‘ webpack, parcel, browserifyκ° μμ΅λλ€.
μ€λμ webpackμ λν΄μ μμλ³΄κ² μ΅λλ€.
π Webpack
1. webpackμ΄λ?
webpackμ μλ°μ€ν¬λ¦½νΈ νλ‘κ·Έλ¨μ μν μ μ λͺ¨λ λ²λ€λ¬ μ λλ€.
νλ‘κ·Έλ¨μ μ²λ¦¬ν λ νμν λͺ¨λ λͺ¨λμ λ§€ννκ³ νλ μ΄μμ λ²λ€μ μμ±ν©λλ€.
(ꡬλλλ λ°©λ²μ κ·Έλλ‘ νλ, λ΄λΆμ μ½λλ₯Ό λ ν¨μ¨μ μΌλ‘ λ°κΏμ£Όλ κ² μ΄λΌκ³ λ ν μ μμ΅λλ€.
2. webpack μ κ°λ
βEntry
λͺ¨λ μΉνμ΄ λ΄λΆ κ΅¬μΆ μμμ μ¬μ©ν΄μΌνλ μμμ μλ―Έν©λλ€. (κΈ°λ³Έμ μΌλ‘ κ°μ ./src/index.js)
βOutput
ꡬμΆμ μμνμ¬ λ°©μΆνλ κ³³μ μλ―Ένλ©°, λ²λ€ νμΌμ μμ±κ³Ό μ΄λ¦μ μ§μ ν©λλ€.
κΈ°λ³Έ νμΌμ ./dist/main.js μΌλ‘ μ§μ λ©λλ€.
βLoader
κΈ°λ³Έμ μΌλ‘ webpackμ JavaScript λ° JSON νμΌ λ§ μ μ΄ν΄ν©λλ€.
νμ§λ§ Loaderλ₯Ό μ¬μ©νλ©΄ μΉν©μ΄ λ€λ₯Έ μ νμ νμΌμ μ²λ¦¬νκ³ μ΄λ₯Ό μ ν리μΌμ΄μ μ μ¬μ©νκ³ μ’ μμ± κ·Έλνμ μΆκ° ν μμλ μ ν¨ν λͺ¨λ λ‘ λ³ν ν μ μμ΅λλ€.
βPlugin
λ‘λλ νΉμ μ νμ λͺ¨λμ λ³ννλλ° μ¬μ©λμ§λ§ νλ¬κ·ΈμΈμ νμ©νμ¬ λ²λ€ μ΅μ ν , asset κ΄λ¦¬ λ° νκ²½ λ³μ μ½μ κ³Ό κ°μ κ΄λ²μν μμ μ μνν©λλ€.
3. webpack μ€μΉλ°©λ²
1. node.jsλ‘ νλ‘μ νΈ μ μΈ (package.jsonμ΄ λ€μ΄λ‘λλλ€)
*package.jasonμ νλ‘μ νΈμ κ΄ν μ€λͺ μ΄ λ€μ΄μλ€.*
npm init
2. webpack / webpack-cli package μ€μΉνκΈ°
npm install -D webpack webpack-cli
-D μ΅μ μ dependencies (λ°°ν¬μ©) devDependencies (κ°λ°μ©)μ΄ μλλ°, κ°λ°μ© μ΅μ μ μ¬μ©ν λ μ λ ₯νλ€.
μ€μΉκ° μλ£λλ©΄, μλμ κ°μ΄ package.jsonμ webpackκ³Ό webpack-cliκ° μ€μΉλ κ² μ λ³Ό μ μλ€.
"devDependencies": {
"webpack": "^5.37.1",
"webpack-cli": "^4.7.0"
}
3. webpack μ€ννκΈ°
npx webpack --entry ./source/index.js --output-path ./public/index_bundle.js
// ./source/index.js μμ μμν΄μ κ·Έ νμΌμ΄ μ¬μ©λκ³ μλ λͺ¨λ νμΌλ€μ νλλ‘ λ²λ€μ λ§λ€μ΄μ
// ./public/index_bundle.jsλ‘ μΆλ ₯ν΄λΌ
μ λͺ λ Ήμ΄λ‘ μ€ννλ©΄ ./public/index_bundle.js κ²½λ‘μ main.jsκ° μμ±λ κ² μ λ³Ό μμλ€.
π create-react-app μΌλ‘ webpack μ μ€μΉ ν λλ?
κΈ°λ³Έ Webpack μ€μ λ€μ΄ λμ΄ μκΈ°λλ¬Έμ μ€μ λ€μ 보기 μν΄μλ ejectν΄μνλ€.
npx run eject
<μ°Έμ‘° μλ£>
https://webpack.js.org/concepts/
Concepts | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
webpack.js.org
'μ½λ©' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
πDOM κ³Ό λΈλΌμ°μ λ λλ§ κ³Όμ (0) | 2021.05.28 |
---|---|
πWindow Size (0) | 2021.05.27 |
π»Web API λ 무μμΌκΉ? (0) | 2021.05.27 |
πProcessμ Multithreadλ? (0) | 2021.04.20 |