-
Notifications
You must be signed in to change notification settings - Fork 5
webpack_JC
jch422 edited this page Dec 19, 2020
·
1 revision
- λͺ¨λ λ²λ€λ¬(Module Bundler)
- λͺ¨λ: νλ‘κ·Έλλ° κ΄μ μμ νΉμ κΈ°λ₯μ κ°λ μμ μ½λ λ¨μ
- λ²λ€λ¬: μΉ μ ν리μΌμ΄μ μ ꡬμ±νλ μμ(HTML, CSS, Javscript, Images λ±)μ λͺ¨λ κ°κ°μ λͺ¨λλ‘ λ³΄κ³ μ΄λ₯Ό μ‘°ν©ν΄μ λ³ν©λ νλμ κ²°κ³Όλ¬Όμ λ§λλ λꡬ
- μλ°μ€ν¬λ¦½νΈ λ³μ μ ν¨ λ²μ
- λΈλΌμ°μ λ³ HTTP μμ² μ«μμ μ μ½
- μ¬μ©νμ§ μλ μ½λμ κ΄λ¦¬
- Dynamic Loading & Lazy Loading λ―Έμ§μ
- μΉν©μ Code Splitting κΈ°λ₯μ μ΄μ©νμ¬ μνλ λͺ¨λμ μνλ νμ΄λ°μ λ‘λ©ν μ μλ€.
-
entry
- μΉ μμμ λ³ννκΈ° μν΄ νμν μ΅μ΄ μ§μ μ μ΄μ μλ°μ€ν¬λ¦½νΈ νμΌ κ²½λ‘
-
module.exports = { entry: './src/index.js' } - entry μμ±μ μ§μ λ νμΌμλ μΉ μ ν리μΌμ΄μ μ μ λ°μ μΈ κ΅¬μ‘°μ λ΄μ©μ΄ λ΄κ²¨μ Έ μμ΄μΌ νλ€.
-
output
- μΉν©μ λλ¦¬κ³ λ κ²°κ³Όλ¬Όμ νμΌ κ²½λ‘
-
const path = require('path'); module.exports = { output: { filename: 'bundle.js', path: path.resolve(__dirname, './dist') } } - filename: μΉν©μΌλ‘ λΉλν νμΌμ μ΄λ¦
- path: ν΄λΉ νμΌμ κ²½λ‘λ₯Ό μλ―Έ
-
loader
- μΉν©μ΄ μΉ μ ν리μΌμ΄μ μ ν΄μν λ μλ°μ€ν¬λ¦½νΈ νμΌμ΄ μλ μΉ μμ(HTML, CSS, Images, ν°νΈ λ±)λ€μ λ³νν μ μλλ‘ λμμ£Όλ μμ±
-
module.exports = { module: { rules: [ { test: /\.css$/, use: ['css-loader'] } ] } } - test : λ‘λλ₯Ό μ μ©ν νμΌ μ ν
- use : ν΄λΉ νμΌμ μ μ©ν λ‘λμ μ΄λ¦
- λ‘λ μ μ© μμ: μ€λ₯Έμͺ½μμ μΌμͺ½ μμΌλ‘ μ μ©λ©
- μμ£Ό μ¬μ©λλ λ‘λ
- babel Loader
- css-Loader
- file-Loader
-
plugin
- μΉν©μ κΈ°λ³Έμ μΈ λμμ μΆκ°μ μΈ κΈ°λ₯μ μ 곡νλ μμ±
- loaderλ νμΌμ ν΄μνκ³ λ³ννλ κ³Όμ μ κ΄μ¬νλ λ°λ©΄, pluginμ ν΄λΉ κ²°κ³Όλ¬Όμ ννλ₯Ό λ°κΎΈλ μν μ νλ€
-
var webpack = require('webpack'); var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { plugins: [ new HtmlWebpackPlugin(), new webpack.ProgressPlugin() ] } - HtmlWebpackPlugin : μΉν©μΌλ‘ λΉλν κ²°κ³Όλ¬Όλ‘ HTML νμΌμ μμ±ν΄μ£Όλ νλ¬κ·ΈμΈ
- ProgressPlugin : μΉν©μ λΉλ μ§νμ¨μ νμν΄μ£Όλ νλ¬κ·ΈμΈ
- Entry μμ±μ μΉν©μ μ€νν λμ νμΌ. μ§μ μ
- Output μμ±μ μΉν©μ κ²°κ³Όλ¬Όμ λν μ 보λ₯Ό μ λ ₯νλ μμ±. μΌλ°μ μΌλ‘ filenameκ³Ό pathλ₯Ό μ μ
- Loader μμ±μ CSS, μ΄λ―Έμ§μ κ°μ λΉ μλ°μ€ν¬λ¦½νΈ νμΌμ μΉν©μ΄ μΈμν μ μκ² μΆκ°νλ μμ±. λ‘λλ μ€λ₯Έμͺ½μμ μΌμͺ½ μμΌλ‘ μ μ©
- Plugin μμ±μ μΉν©μΌλ‘ λ³νν νμΌμ μΆκ°μ μΈ κΈ°λ₯μ λνκ³ μΆμ λ μ¬μ©νλ μμ±. μΉν© λ³ν κ³Όμ μ λ°μ λν μ μ΄κΆμ κ°κ³ μμ
-
μΉν© λ²μ 4λΆν° modeλΌλ κ°λ μ΄ μΆκ°
- none : λͺ¨λ μ€μ μν¨
- development : κ°λ° λͺ¨λ
- production : λ°°ν¬ λͺ¨λ(default
-
development modeμΈ κ²½μ°μλ κ°λ°μλ€μ΄ μ’ λ 보기 νΈνκ² μΉν© λ‘κ·Έλ κ²°κ³Όλ¬Όμ΄ λ³΄μ¬μ§κ³ , production modeμΈ κ²½μ°μλ μ±λ₯ μ΅μ νλ₯Ό μν΄ κΈ°λ³Έμ μΈ νμΌ μμΆ λ±μ λΉλ κ³Όμ μ΄ μΆκ°λ©λλ€.
- λ°°ν¬μ©μΌλ‘ λΉλν νμΌκ³Ό μλ³Έ νμΌμ μλ‘ μ°κ²°μμΌμ£Όλ κΈ°λ₯
- λ²λ€ νμΌμ νΉμ λΆλΆ(μ£Όλ‘ μλ¬κ° λ°μν λΆλΆ)μ΄ μλ³Έ μμ€μ μ΄λ€ λΆλΆμΈμ§ νμΈνκ³ μΆμ λ μ μ©
-
module.exports = { devtool: 'cheap-eval-source-map' } - μμ€ λ§΅ μ€μ μ΅μ λΉκ΅ν
