Webpackμ μνΈλ¦¬ ν¬μΈνΈλ‘ μ§μ λ νμΌ(./src/index.js)μ μμμΌλ‘, ν΄λΉ νμΌμμ κ°μ Έμ€λ λͺ¨λ λͺ¨λκ³Ό μμ‘΄μ±μ νλμ νμΌ(main.js)λ‘ λ²λ€λ§ν©λλ€.
Production λͺ¨λμμλ Webpackμ΄ κΈ°λ³Έμ μΌλ‘ μ½λ μμΆ(Uglify) λ° μ΅μ ν μμ μ μνν©λλ€. μ΄λ₯Ό ν΅ν΄ λ²λ€ νμΌμ ν¬κΈ°λ₯Ό μ€μ΄κ³ λ‘λ μλλ₯Ό ν₯μμν΅λλ€. ꡬ체μ μΌλ‘λ:
- μ½λ μμΆ: μ½λλ₯Ό μ΅μννκ³ λΆνμν 곡백과 μ£Όμμ μ κ±°ν©λλ€.
- λλ ν: λ³μμ ν¨μμ μ΄λ¦μ λ¨μΆνμ¬ νμΌ ν¬κΈ°λ₯Ό μ€μ λλ€.
Webpackμ κ° λͺ¨λμ νλμ νμΌλ‘ ν©λ³νμ¬ νμν λͺ¨λλ€μ ν¨κ» λ¬Άμ΅λλ€. μ΄ κ³Όμ μμ CommonJS, ES6 λͺ¨λ, AMD λ±μ λͺ¨λ ν¬λ§·μ μ§μν©λλ€.
Production λͺ¨λμμλ process.env.NODE_ENVκ° 'production'μΌλ‘ μ€μ λ©λλ€. μ΄λ₯Ό ν΅ν΄ μ½λ λ΄μμ νκ²½μ λ°λΌ λ€λ₯Έ λμμ μνν μ μμ΅λλ€.
Production λͺ¨λμμλ Webpackμ΄ μΌλΆ μ΅μ νλ λ‘λλ₯Ό μ¬μ©ν©λλ€. μλ₯Ό λ€μ΄, Babel λ‘λλ production λͺ¨λμμ μ½λ λ³νμ λ μ΅μ νν μ μμ΅λλ€.
Webpackμ κΈ°λ³Έμ μΌλ‘ λͺ κ°μ§ νλ¬κ·ΈμΈμ μ¬μ©νμ¬ μ΅μ ν μμ μ μνν©λλ€. μλ₯Ό λ€μ΄, TerserPluginμ μ¬μ©νμ¬ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μμΆν©λλ€. Webpackμ κΈ°λ³Έ μ€μ μμλ λͺ κ°μ§ κΈ°λ³Έ νλ¬κ·ΈμΈμ΄ ν¬ν¨λμ΄ μμ΅λλ€. νΉν, production λͺ¨λμμλ νΉμ νλ¬κ·ΈμΈμ΄ μλμΌλ‘ νμ±νλμ΄ μ΅μ νλ₯Ό λμ΅λλ€. μλμ Webpackμ΄ production λͺ¨λμμ κΈ°λ³ΈμΌλ‘ μ¬μ©νλ μ£Όμ νλ¬κ·ΈμΈλ€μ μ€λͺ νκ² μ΅λλ€.
μ΄ νλ¬κ·ΈμΈμ process.env.NODE_ENVλ₯Ό 'production'μΌλ‘ μ€μ νμ¬, μ½λ λ΄λΆμμ νκ²½μ λ°λΌ λμμ λ€λ₯΄κ² ν μ μκ² ν©λλ€. μλ₯Ό λ€μ΄, if (process.env.NODE_ENV === 'production') { ... } κ°μ μ‘°κ±΄λ¬Έμ΄ μμ΅λλ€.
μ΄ νλ¬κ·ΈμΈμ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό λλ ννκ³ μμΆν©λλ€. κΈ°λ³Έμ μΌλ‘ production λͺ¨λμμ νμ±νλμ΄ μ½λ ν¬κΈ°λ₯Ό μ΅μνν©λλ€.
μ΄ νλ¬κ·ΈμΈμ μ€μ½ν νΈμ΄μ€ν (scope hoisting)μ ν΅ν΄ λ λΉ λ₯΄κ³ μμ λ²λ€μ μμ±ν©λλ€. λͺ¨λ κ°μ μ€λ³΅λ μ½λλ₯Ό μ€μ΄κ³ , μ€ν μλλ₯Ό ν₯μμν΅λλ€.
μ»΄νμΌ λμ€ μλ¬κ° λ°μνμ λ, λ²λ€μ μμ±νμ§ μλλ‘ ν©λλ€. μ΄λ‘ μΈν΄ μ€ν¨ν λΉλκ° λ°°ν¬λμ§ μλλ‘ ν©λλ€.
νκ²½ λ³μλ₯Ό μ€μ νλ νλ¬κ·ΈμΈμΌλ‘, process.env.NODE_ENVμ κ°μ λ³μλ₯Ό μ€μ ν©λλ€.
κΈ°λ³Έ μ€μ μΌλ‘ μΈν νλ¬κ·ΈμΈ νμ±ν Webpackμ΄ production λͺ¨λμμ κΈ°λ³Έμ μΌλ‘ νμ±ννλ νλ¬κ·ΈμΈλ€μ μλμ κ°μ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ νμΈν μ μμ΅λλ€:
webpack --mode production
μ΄ λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄, Webpackμ κΈ°λ³Έμ μΌλ‘ μμμ μΈκΈν νλ¬κ·ΈμΈλ€μ νμ±ννμ¬ λ²λ€λ§ κ³Όμ μ μ΅μ νν©λλ€.
νμ¬ μν©μμ, production λͺ¨λμ Webpackμ΄ μννλ μ£Όμ μμ μ λ€μκ³Ό κ°μ΅λλ€:
- λͺ¨λ λͺ¨λκ³Ό μμ‘΄μ±μ νλμ λ²λ€ νμΌλ‘ λ¬ΆκΈ°
- μ½λ μμΆ λ° λλ ν
- νκ²½ λ³μ μ€μ
- μ΅μ νλ λ‘λ μ¬μ©
- κΈ°λ³Έ νλ¬κ·ΈμΈ μ μ©μ ν΅ν μΆκ° μ΅μ ν
- μ΄λ₯Ό ν΅ν΄ λ‘λ μλκ° λΉ λ₯΄κ³ , μ΅μ νλ λ²λ€ νμΌμ μμ±νκ² λ©λλ€.
- JavaScript νμΌμμ μ΄λ―Έμ§λ₯Ό μ§μ μν¬νΈνκ³ μ¬μ©νλ κ²½μ°, Webpackμ μ΄λ―Έμ§λ₯Ό λ²λ€λ§νκ³ ν΄λΉ κ²½λ‘λ₯Ό μ²λ¦¬νμ¬ μ¬λ°λ₯Έ URLλ‘ λ³νν©λλ€.
- μλ₯Ό λ€μ΄, index.jsμμ import Icon from './icon.png';μ κ°μ΄ μ΄λ―Έμ§λ₯Ό μν¬νΈνλ©΄, Webpackμ μ΄λ―Έμ§λ₯Ό λ²λ€λ§νκ³ Icon λ³μμ μ¬λ°λ₯Έ κ²½λ‘λ₯Ό ν λΉν©λλ€. const myIcon = new Image(); myIcon.src = Icon; μ½λμμ Icon λ³μλ λ²λ€λ μ΄λ―Έμ§μ URLμ κ°λ¦¬ν€λ―λ‘, μ΄λ―Έμ§λ₯Ό HTML μμμ μΆκ°ν μ μμ΅λλ€.
- CSS νμΌμμ μ΄λ―Έμ§λ₯Ό μ¬μ©νλ©΄, Webpackμ css-loaderμ style-loaderκ° μ΄λ―Έμ§λ₯Ό μ²λ¦¬νμ¬ μ¬λ°λ₯Έ URLλ‘ λ³νν©λλ€.
- background: url('./icon.png');μ κ°μ΄ CSSμμ μ΄λ―Έμ§λ₯Ό μ¬μ©νλ κ²½μ°, Webpackμ μ΄λ―Έμ§λ₯Ό λ²λ€λ§νκ³ CSS νμΌ λ΄μμ μ¬μ©λ μ μλ URLλ‘ λ³νν©λλ€.
- CSS νμΌμ import './style.css';λ‘ μν¬νΈνλ©΄, Webpackμ CSS νμΌμ JavaScript νμΌμ ν¬ν¨μν€κ³ μ€νμΌμ HTML λ¬Έμμ μ μ©ν©λλ€.
- CSS νμΌμ μν¬νΈνλ κ²½μ°:
- μ€νμΌμ΄ μ μ©λμ΄ .hello ν΄λμ€κ° μλ μμμ λΉ¨κ°μ ν μ€νΈ μμκ³Ό λ°±κ·ΈλΌμ΄λ μ΄λ―Έμ§κ° μ μ©λ©λλ€.
- λ°±κ·ΈλΌμ΄λ μ΄λ―Έμ§λ CSSμμ μ μλ λλ‘ μ μ©λ©λλ€.
- CSS νμΌμ μν¬νΈνμ§ μλ κ²½μ°:
- μ€νμΌμ΄ μ μ©λμ§ μμΌλ―λ‘ .hello ν΄λμ€κ° μλ μμμ ν μ€νΈ μμκ³Ό λ°±κ·ΈλΌμ΄λ μ΄λ―Έμ§κ° μ μ©λμ§ μμ΅λλ€.
- JavaScriptμμ μ§μ μΆκ°ν μ΄λ―Έμ§λ μ¬μ ν DOMμ μΆκ°λ©λλ€. μ΄λ index.jsμμ myIcon.src = Icon;λ‘ μ€μ λ μ΄λ―Έμ§μ λλ€.
- CSS νμΌμ μν¬νΈνλ©΄ μ€νμΌμ΄ μ μ©λλ©°, CSS λ΄μ λ°±κ·ΈλΌμ΄λ μ΄λ―Έμ§λ μ¬λ°λ₯΄κ² λ‘λλ©λλ€.
- CSS νμΌμ μν¬νΈνμ§ μμΌλ©΄ JavaScriptμμ μ§μ μΆκ°ν μ΄λ―Έμ§λ DOMμ μΆκ°λμ§λ§, CSS μ€νμΌκ³Ό λ°±κ·ΈλΌμ΄λ μ΄λ―Έμ§λ μ μ©λμ§ μμ΅λλ€.
- μ΄λ₯Ό ν΅ν΄ CSS νμΌ μν¬νΈμ μ€μμ±κ³Ό μ΄λ―Έμ§ λ‘λμ μν μ μ΄ν΄ν μ μμ΅λλ€. CSS νμΌμ μν¬νΈν¨μΌλ‘μ¨ μ€νμΌμ΄ μ μ©λκ³ , CSSμμ μ μν μ΄λ―Έμ§κ° μ¬λ°λ₯΄κ² λ‘λλ©λλ€.
-
μ΄μ κΉμ§λ λͺ¨λ μμ μ
index.htmlνμΌμ μλμΌλ‘ μΆκ°νμμ΅λλ€. νμ§λ§ μνΈλ¦¬ ν¬μΈνΈμ μ΄λ¦μ λ³κ²½νκ±°λ μ μνΈλ¦¬ ν¬μΈνΈλ₯Ό μΆκ°νλ©΄ index.html μ μ΄μ μ μλμΌλ‘ μΆκ°ν μμ μ μ΄λ¦μ μ°Έμ‘°ν©λλ€.HtmlWebpackPluginνλ¬κ·ΈμΈμ ν΅νμ¬ dist μμindex.htmlνμΌμ΄ μ‘΄μ¬νλλΌλ μλ‘ μμ±λ νμΌλ‘ λ체νλ©°, λͺ¨λ λ²λ€μ΄ μλμΌλ‘index.htmlνμΌμ μΆκ°λ©λλ€. -
μ¬μ©νλ νμΌλ§ μμ±λλλ‘ λΉλ μ
/distν΄λλ₯Ό μ 리ν΄μ£Όλ μ΅μ μΈ output.clean μ΅μ μ΄ μμ΅λλ€.
-
webpackμ΄ μμ€ μ½λλ₯Ό λ²λ€λ‘ λ¬Άμ λ, μ€λ₯μ κ²½κ³ μ μλ μμΉλ₯Ό μΆμ νκΈ° μ΄λ €μΈ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΈ κ°μ μμ€ νμΌ(a.js, b.js, κ·Έλ¦¬κ³ c.js)μ νλμ λ²λ€λ‘ λ¬Άκ³ νλμ μμ€ νμΌμ΄ μ€λ₯κ° μλ κ²½μ°, μ€ν μΆμ μ λ¨μν bundle.jsλ₯Ό κ°λ¦¬ν΅λλ€.
-
μ€λ₯μ κ²½κ³ λ₯Ό μ½κ² μΆμ ν μ μλλ‘, JavaScriptλ μ»΄νμΌλ μ½λλ₯Ό μλ μμ€λ‘ λ§€ννλ μμ€λ§΅μ μ 곡ν©λλ€. b.jsμμ μ€λ₯κ° λ°μν κ²½μ°, μμ€λ§΅μμ μ νν μλ €μ€λλ€.
- μμ€ λ§΅ μ¬μ©:
- μμ€ λ§΅ λ―Έμ¬μ©:
-
webpackμ΄ λνλμ κ·Έλν λ΄μ λͺ¨λ νμΌμμμ λ³κ²½μ¬νμ "κ°μ"νλλ‘ μ§μν μ μμ΅λλ€. νμΌ μ€ νλκ° μ λ°μ΄νΈλλ©΄, μ½λκ° λ€μ μ»΄νμΌλλ―λ‘ μ 체 λΉλλ₯Ό μλμΌλ‘ μ€νν νμκ° μμ΅λλ€.
-
λ³κ²½μ¬νμ νμΈνλ €λ©΄ λΈλΌμ°μ λ₯Ό μλ‘κ³ μΉ¨ ν΄μΌ ν©λλ€. μ΄κ²μ μλμΌλ‘ νλ
webpack-dev-serverκ° μμ΅λλ€.
-
λ©λͺ¨λ¦¬ λ΄ λ²λ€ νμΌ:
src/index.jsλ₯Ό λ²λ€λ§νμ¬dist/bundle.jsλ‘ λ©λͺ¨λ¦¬μ μ μ₯ν©λλ€.
-
μλ² λ£¨νΈ κ²½λ‘μ λ§μ΄νΈ:
- λ©λͺ¨λ¦¬μ μ μ₯λ
dist/bundle.jsνμΌμ μλ²μ/dist/κ²½λ‘μ λ§μ΄νΈν©λλ€. λΈλΌμ°μ μμhttp://localhost:8080/dist/bundle.jsλ‘ μ κ·Όν μ μμ΅λλ€.
- λ©λͺ¨λ¦¬μ μ μ₯λ
-
λμ€ν¬μ νμΌ μμ± μ ν¨:
dist/λλ ν°λ¦¬ λ΄μ μ€μ νμΌbundle.jsλ μ‘΄μ¬νμ§ μμ΅λλ€. λͺ¨λ λ²λ€ νμΌμ λ©λͺ¨λ¦¬ λ΄μλ§ μ‘΄μ¬ν©λλ€.
-
dist/λλ ν°λ¦¬λ₯Ό μμ νκ³webpack serve --openμ μ€ννλ©΄dist/λλ ν°λ¦¬ λ΄λΆμ λ²λ€ νμΌμ΄ μμ±λμ§ μμμ§λ§ μλ²λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬μ μλ νμΌμ μ 곡νκΈ° λλ¬Έμ μ μμ μΌλ‘ λμν©λλ€.
webpack-dev-middlewareλwebpackμμ μ²λ¦¬ν νμΌμ μλ²λ‘ λ΄λ³΄λ΄λ λνΌ μ λλ€.webpack-dev-middlewareμexpressμλ²λ₯Ό κ²°ν©ν μ μκ³ ν¬νΈ λ²νΈλ₯Ό μ€μ ν μ μμ΅λλ€.
- μ½λ μ€ν리ν μ webpackμ κ°μ₯ λ§€λ ₯μ μΈ κΈ°λ₯ μ€ νλμ λλ€. μ΄ κΈ°λ₯μ μ¬μ©νμ¬ μ½λλ₯Ό λ€μν λ²λ€λ‘ λΆν νκ³ , μμ²μ λ°λΌ λ‘λνκ±°λ λ³λ ¬λ‘ λ‘λν μ μμ΅λλ€. λ μμ λ²λ€μ λ§λ€κ³ 리μμ€ μ°μ μμλ₯Ό μ¬λ°λ₯΄κ² μ μ΄νκΈ° μν΄μ μ¬μ©νλ©°, μ νμ©νλ©΄ λ‘λ μκ°μ ν° μν₯μ λΌμΉ μ μμ΅λλ€.
- μ½λλ₯Ό λΆν νλ κ°μ₯ μ½κ³ μ§κ΄μ μΈ λ°©λ²μ΄μ§λ§ λ€λ₯Έ λ°©λ²μ λΉν΄ μλμ μ΄κ³ , λͺ κ°μ§ ν¨μ μ΄ μμ΅λλ€.
λΉλ λ‘κ·Έλ₯Ό 보면 λ€μκ³Ό κ°μ μ λ³΄κ° μμ΅λλ€:
[webpack-cli] Compilation finished
asset index.bundle.js 553 KiB [emitted] (name: index)
asset another.bundle.js 553 KiB [emitted] (name: another)
runtime modules 2.49 KiB 12 modules
cacheable modules 530 KiB
./src/index.js 257 bytes [built] [code generated]
./src/another-module.js 84 bytes [built] [code generated]
./node_modules/lodash/lodash.js 530 KiB [built] [code generated]
webpack 5.4.0 compiled successfully in 245 ms
μ΄ λ‘κ·Έμμ λͺ κ°μ§ μ€μν μ μ νμΈν μ μμ΅λλ€.
-
λ²λ€ νμΌμ ν¬κΈ°:
- index.bundle.jsμ another.bundle.js λͺ¨λ 553 KiBμ λλ€.
-
λͺ¨λ ν¬κΈ°:
- ./node_modules/lodash/lodash.jsλ 530 KiBμ λλ€.
-
λͺ¨λμ ν¬ν¨ μ¬λΆ:
- ./src/index.js, ./src/another-module.js, κ·Έλ¦¬κ³ ./node_modules/lodash/lodash.jsκ° cacheable modulesλ‘ λμ΄λμ΄ μμΌλ©°, μ΄λ μ΄ λͺ¨λλ€μ΄ λ²λ€μ ν¬ν¨λμμμ λνλ λλ€.
-
webpack-bundle-analyzerλ₯Ό ν΅ν λΆμ κ²°κ³Όμμλ νμΈν μ μμ΅λλ€.
π μμ£Ό μ¬μ©νλ λΌμ΄λΈλ¬λ¦¬ νΉμ νλ μμν¬μμμ entry points
- Reactμ κ°μ SPAμ κ²½μ° νλμ html νμΌκ³Ό νλμ μνΈλ¦¬ ν¬μΈνΈλ₯Ό κ°μ§λλ€.
- Next.jsμ κ°μ νλ μμν¬μ κ²½μ° app/pages λλ ν 리 λ΄μ κ° νμΌμ΄ μνΈλ¦¬ ν¬μΈνΈ μ
λλ€. λ¨μΌ html νμΌμ κ° μνΈλ¦¬ ν¬μΈνΈκ° λμ μΌλ‘ λ λλ§λ©λλ€.
- μμ κ²½μ° htmlκ³Ό μνΈλ¦¬ν¬μΈνΈκ° 1:1 λμμ΄ λ©λλ€.
π MFA (λ§μ΄ν¬λ‘ νλ‘ νΈμλ μν€ν μ³)
- νλμ νμ΄μ§ μμ
homeνμhome.bundle.js,blogνμblog.bundle.jsλ₯Ό μ¬μ©νλ κ²½μ° μνΈλ¦¬ ν¬μΈνΈκ° μ¬λ¬κ° μ λλ€.<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Multi-Page Application</title> </head> <body> <div id="home"></div> <div id="blog"></div> <script src="home.bundle.js"></script> <script src="blog.bundle.js"></script> </body> </html>
dependOn μ΅μ
μ μ¬μ©νμ¬ μ²ν¬κ° λͺ¨λμ 곡μ ν μ μμ΅λλ€.
λΉλ λ‘κ·Έ:
assets by status 4.57 MiB [cached] 2 assets
assets by status 1.43 MiB [emitted]
asset shared.bundle.js 1.37 MiB [emitted] (name: shared)
asset index.bundle.js 55.6 KiB [emitted] (name: index)
asset another.bundle.js 1.57 KiB [emitted] (name: another)
asset index.html 383 bytes [emitted]
asset runtime.bundle.js 16.1 KiB [compared for emit] (name: runtime)
Entrypoint index 55.6 KiB (4.57 MiB) = index.bundle.js 2 auxiliary assets
Entrypoint another 1.57 KiB = another.bundle.js
Entrypoint shared 1.39 MiB = runtime.bundle.js 16.1 KiB shared.bundle.js 1.37 MiB
runtime modules 3.76 KiB 10 modules
javascript modules 545 KiB
modules by path ./node_modules/.pnpm/ 541 KiB
modules by path ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.93.0_webpack-cli@5.1.4_/node_m...(truncated) 5.84 KiB 6 modules
modules by path ./node_modules/.pnpm/css-loader@7.1.2_webpack@5.93.0_webpack-cli@5.1.4_/node_mod...(truncated) 3.33 KiB 3 modules
./node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js 531 KiB [built] [code generated]
modules by path ./src/ 4.32 KiB
modules by path ./src/*.js 874 bytes 3 modules
modules by path ./src/*.css 3.47 KiB
./src/style.css 1.66 KiB [built] [code generated]
./node_modules/.pnpm/css-loader@7.1.2_webpack@5.93.0_webpack-cli@5.1.4_/node_modules/css-loader/dist/cjs.js!./src/style.css 1.81 KiB [built] [code generated]
asset modules 84 bytes (javascript) 4.57 MiB (asset)
./src/image.png 42 bytes (javascript) 2.6 MiB (asset) [built] [code generated]
./src/PretendardVariable.woff2 42 bytes (javascript) 1.96 MiB (asset) [built] [code generated]
webpack 5.93.0 compiled successfully in 365 ms
-
κΈ°μ‘΄
index.bundle.jsanother.bundle.jsμ ν¬ν¨λμ΄ μλ lodashκ° λΆλ¦¬λμ΄share.bundle.jsνμΌμ λ³λλ‘ λΆλ¦¬λ©λλ€. -
webpack-bundle-analyzerλ₯Ό ν΅ν λΆμ κ²°κ³Όμμλ νμΈν μ μμ΅λλ€.
SplitChunksPlugin μ ν΅νμ¬ μνΈλ¦¬ μ²ν¬ νΉμ μμ ν μλ‘μ΄ μ²ν¬λ‘ κ³΅ν΅ μμ‘΄μ±μ μΆμΆν μ μμ΅λλ€.
λΉλλ‘κ·Έ:
assets by status 4.57 MiB [cached] 2 assets
assets by path . 1.44 MiB
asset shared.bundle.js 1.39 MiB [emitted] (name: shared) (id hint: vendors)
asset index.bundle.js 55.5 KiB [emitted] (name: index)
asset another.bundle.js 1.49 KiB [emitted] (name: another)
asset index.html 335 bytes [emitted]
runtime modules 3.76 KiB 10 modules
javascript modules 545 KiB
modules by path ./node_modules/.pnpm/ 541 KiB
modules by path ./node_modules/.pnpm/style-loader@4.0.0_webpack@5.93.0_webpack-cli@5.1.4_/node_m...(truncated) 5.84 KiB 6 modules
modules by path ./node_modules/.pnpm/css-loader@7.1.2_webpack@5.93.0_webpack-cli@5.1.4_/node_mod...(truncated) 3.33 KiB 3 modules
./node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js 531 KiB [built] [code generated]
modules by path ./src/ 4.32 KiB
modules by path ./src/*.js 874 bytes 3 modules
modules by path ./src/*.css 3.47 KiB
./src/style.css 1.66 KiB [built] [code generated]
./node_modules/.pnpm/css-loader@7.1.2_webpack@5.93.0_webpack-cli@5.1.4_/node_modules/css-loader/dist/cjs.js!./src/style.css 1.81 KiB [built] [code generated]
asset modules 84 bytes (javascript) 4.57 MiB (asset)
./src/image.png 42 bytes (javascript) 2.6 MiB (asset) [built] [code generated]
./src/PretendardVariable.woff2 42 bytes (javascript) 1.96 MiB (asset) [built] [code generated]
webpack 5.93.0 compiled successfully in 327 ms
-
optimization.splitChunksμ€μ μ΅μ μ μ μ©νλ©΄index.bundle.jsμanother.bundle.jsμμ μ€λ³΅ μμ‘΄μ±μ΄ μ κ±°λ κ²μ νμΈν μ μμ΅λλ€. lodashκ° λ³λμ μ²ν¬λ‘ λΆλ¦¬ λμκ³ , λ©μΈ λ²λ€μμ μ κ±°λμμ΅λλ€. -
webpack-bundle-analyzerλ₯Ό ν΅ν λΆμ κ²°κ³Όμμλ νμΈν μ μμ΅λλ€.
dynamic importsλ₯Ό μ¬μ©νμ¬ μ μ μΌλ‘ import νλ λͺ¨λμ λμ μΌλ‘ κ°μ Έμμ μ²ν¬λ₯Ό λΆλ¦¬ν μ μμ΅λλ€.
- prefetch : ν₯ν μΌλΆ νμμ 리μμ€κ° νμν μ μμ΅λλ€.
- preload : νμ¬ νμ μ€μ 리μμ€λ νμν©λλ€.
//...
import(/* webpackPrefetch: true */ './path/to/LoginModal.js');
<link rel="prefetch" href="login-modal-chunk.js">
prefetch ννΈλ₯Ό ν΅νμ¬ λΈλΌμ°μ μ login-modal-chunk.jsλ₯Ό μ ν΄μκ°μ 미리 κ°μ Έμ€λλ‘ μ§μν©λλ€.
webpackμ λΆλͺ¨ μ²ν¬κ° λ‘λλ ν ν리νμΉ ννΈλ₯Ό μΆκ°ν©λλ€.
- ν리λ‘λ μ²ν¬λ λΆλͺ¨ μ²ν¬μ λ³λ ¬λ‘ λ‘λλ₯Ό μμν©λλ€. ν리νμΉ μ²ν¬λ λΆλͺ¨ μ²ν¬κ° λ‘λ μλ£λ νμ λ‘λλ₯Ό μμν©λλ€.
- ν리λ‘λ μ²ν¬λ μ€κ° μ°μ μμλ₯Ό κ°μ§λ©° μ¦μ λ€μ΄λ‘λλ©λλ€. ν리νμΉ μ²ν¬λ λΈλΌμ°μ κ° μ ν΄ μνμΌ λ λ€μ΄λ‘λ λ©λλ€.
- ν리λ‘λ μ²ν¬λ λΆλͺ¨ μ²ν¬μμ μ¦μ μμ² λμ΄μΌ ν©λλ€. ν리νμΉ μ²ν¬λ λμ€μ μΈμ λΌλ μ¬μ©ν μ μμ΅λλ€.
- μ§μνλ λΈλΌμ°μ μ μ°¨μ΄κ° μμ΅λλ€.
- ν리λ‘λλ μμ λ§μ μ μ΄κ° νμν©λλ€. λͺ¨λ λμ importμ ν리λ‘λλ λΉλκΈ° μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ μνν μ μμ΅λλ€.
//...
import(/* webpackPreload: true */ 'ChartingLibrary');
ChartComponentλ₯Ό μ¬μ©νλ νμ΄μ§λ₯Ό μμ²ν λ λ₯Ό ν΅ν΄ charting-library-chunkλ μμ²λ©λλ€. page-chunkκ° λ μκ³ λ 빨리 μλ£λλ€κ³ κ°μ νλ©΄ μ΄λ―Έ μμ²λ charting-library-chunkκ° μλ£λ λκΉμ§ νμ΄μ§μλ LoadingIndicatorκ° νμλ©λλ€. λ λ²μ΄ μλ ν λ²μ λΌμ΄λ νΈλ¦½μ΄ νμνλ―λ‘ λκΈ° μκ°μ΄ κΈ΄ νκ²½μμ λ‘λ μκ°μ΄ μ¦κ°ν μ μμ΅λλ€.
