์›นํŒฉ์ด๋ž€?

2022. 1. 8. 20:03ใ†Webpack

์›นํŒฉ์ด๋ž€

 

 

์›นํŒฉ

 

์›นํŒฉ์€ ๋ฒˆ๋“ค๋ง(ํ†ตํ•ฉ) ์ž‘์—…์„ ํ†ตํ•˜์—ฌ javascript, css, htmlํŒŒ์ผ ๋“ฑ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ†ตํ•ฉ์‹œ์ผœ์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค.

์ด๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.

 

์›นํŒฉ์„ ์•Œ๊ธฐ ์ „์— ์›นํŒฉ์ด ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด์ž.

 

์›นํŒฉ์˜ ํ•„์š”์„ฑ 

1) Network์˜ request๊ฐ€ ๊ฐ์†Œํ•œ๋‹ค -> ์›นํŒฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ทธ ๋Œ€์ƒ์ด css๋“  pngํŒŒ์ผ์ด๋“  javascriptํŒŒ์ผ์ด๋“  ์—ฌ๋Ÿฌ๊ฐœ์˜ request๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด๋Š” ์„œ๋ฒ„ ๋กœ๋”ฉ์‹œ๊ฐ„์— ์—ฐ๊ฒฐ๋˜๋ฉฐ ์‚ฌ์šฉํ• ๋•Œ์™€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ํฐ ์ฐจ์ด๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

2) ํŒŒ์ผ ๋‹จ์œ„๋กœ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค -> ํ•˜๋‚˜์˜ htmlํŒŒ์ผ ๋‚ด๋ถ€์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ script๋ฅผ ๊ฐ€์ง€๊ณ  ์˜จ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

 scriptํŒŒ์ผ์—์„œ ๋ถˆ๋Ÿฌ์˜จ ๋ณ€์ˆ˜๋“ค์€ ๋ฌด์ˆ˜ํžˆ ๋งŽ์„ ๊ฒƒ์ด๊ณ  ์ด๋“ค ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜์ด๋ฆ„์ด ๊ฐ™๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. 

์›นํŒฉ์€ script๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

3) ์›น ๊ฐœ๋ฐœ ์ž‘์—…์˜ ์ž๋™ํ™” -> ์›น ๊ฐœ๋ฐœ์— ์“ฐ์ด๋Š” ์ž์›๋“ค์„ ์••์ถ•ํ•ด์ฃผ๋Š” ๋กœ์ง์„ ์ž์ฒด์ ์œผ๋กœ ๊ฐ–๊ณ ์žˆ๋‹ค. ์ด๋Š” ์„ฑ๋Šฅํ–ฅ์ƒ์— ๋†’์€ ๊ธฐ์—ฌ๋ฅผ ํ•œ๋‹ค.

 

์›นํŒฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ์ „์— ์‚ฌ์ „์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. webpack๊ณผ webpack-cli ์„ค์น˜

2. npm init -y //๊ธฐ๋ณธ๊ฐ’์œผ๋กœ package.json ์ƒ์„ฑ

3. webpack.config.jsํŒŒ์ผ ์ƒ์„ฑ.  

 

์›นํŒฉ์˜ ํฐ ํ‹€์€ 4๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

entry, output, loader, plugin

๋จผ์ € ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

 

var path = require('path');    //---------1
var MiniCssExtractPlugin = require("mini-css-extract-plugin"); //---------2

module.exports = { 	//-----------3
  mode: 'none', 	//-----------4
  entry: './index.js',		//------------5
  output: {			//--------------6
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {  //-------------7
    rules: [
      {
        test: /\.css$/,  
        use: [
          { loader: MiniCssExtractPlugin.loader },
          "css-loader"
        ]
      }
    ]
  },
  plugins: [  //------------8
    new MiniCssExtractPlugin() //-------------9
  ],
}

 

1๋ฒˆ : Path๋Š” NodeJs์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ์ž‘์—…์— ๋Œ€ํ•ด Utility๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

2๋ฒˆ : ์‚ฌ์ „์— npm i mini-css-extract-plugin์„ ํ†ตํ•ด์„œ require๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฒˆ๋“ค์ž‘์—…์„ ํ•˜๊ณ  ๋งˆ์ง€๋ง‰๋‹จ๊ณ„์—์„œ cssํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ •๋ณด๋Š” 8๋ฒˆ์— ์ถ”๊ฐ€๋กœ ์ง„ํ–‰.

 

3๋ฒˆ : ์›นํŒฉ์„ ์„ค์ •ํ•˜๋Š” ๋ถ€๋ถ„

 

4๋ฒˆ : mode๋Š” ์ด 3๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. none, production, development. ๋ˆˆ์—ฌ๊ฒจ๋ณผ ๊ฒƒ์€ production๊ณผ development์ธ๋ฐ production์€ ๋ฐฐํฌ๋ฅผ ํ•  ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“œ์ด๋‹ค. ์ด๋Š” "๋ฒˆ๋“ค์˜ ์ตœ์†Œํ™” ๋ฐ ๊ฐ€๋ฒผ์šด ์†Œ์Šค๋งต๊ณผ ์• ์…‹ ์ตœ์ ํ™”๋ฅผ ์ดˆ์ "์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์ด๊ณ  development๋Š” ๊ฐœ๋ฐœ์šฉ์œผ๋กœ "๋ผ์ด๋ธŒ ๋ฆฌ๋กœ๋”ฉ" ์ฆ‰ ์†๋„๋ฅผ ์ดˆ์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ์›ํ•˜๊ธฐ์— ๊ฐ๊ฐ ์ง€ํ–ฅํ•˜๋Š” ๋ฐ”๊ฐ€ ๋‹ค๋ฅด๋‹ค.

 

5๋ฒˆ : entry๋Š” ์ง„์ž…์ ์œผ๋กœ ์›นํŒฉ์˜ ์‹œ์ž‘๋ถ€๋ถ„์ด๋‹ค. ์„ค์ •ํ•ด๋†“์€ entry๋กœ ์ง„์ž…ํ•ด ์›นํŒฉ์ด ์ž์ฒด์ ์œผ๋กœ ํŒŒ์ผ๋“ค์„ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค. entry๋Š” ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. 

 

6๋ฒˆ : output์€ ๋ฒˆ๋“ค๋ง์ž‘์—…์„ ๋งˆ์นœ ์ถœ๋ ฅํŒŒ์ผ์ด๋‹ค. ์ด ํŒŒ์ผ ๋‚ด๋ถ€์—๋Š” ๋ฒˆ๋“ค๋งํ•œ ์ฝ”๋“œ๊ฐ€ ์ „๋ถ€ ์ ํ˜€์žˆ๋‹ค.

 

7๋ฒˆ : module์€ loader๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ loader๋“ค์— ๋Œ€ํ•œ ๊ทœ์น™๋“ค์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋‹ค. ๊ทธ๋Ÿผ loader๋Š” ์–ด๋–ค ์—ญํ• ์„ ํ• ๊นŒ? 

์˜ˆ์‹œ๋กœ css-loader๋Š” cssํŒŒ์ผ์„ jsํŒŒ์ผ๋กœ ๋„ฃ๋Š” ์ž‘์—…์„ ํ•ด์ฃผ๊ณ , Mini-css-extract-loader๋Š” 2๋ฒˆ์—์„œ ์–ธ๊ธ‰ํ•œ๋ฐ”์™€ ๊ฐ™์ด ๋งˆ์ง€๋ง‰๋‹จ๊ณ„์—์„œ cssํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

 

8๋ฒˆ : ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ฒˆ๋“ค๋ง ์ž‘์—…์„ ๋งˆ์น˜๊ณ  ๋งˆ์ง€๋ง‰๋‹จ๊ณ„์—์„œ ์›นํŒฉ์ด ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ๋”ํ•ด์ค„์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ. ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. 

 

ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๋กœ๋”์˜ ์ฐจ์ด์ ์€ ๋ญ˜๊นŒ?

ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•ด๋‹น ๊ฒฐ๊ณผ๋ฌผ์˜ ํ˜•ํƒœ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ์ด๊ณ  ๋กœ๋”๋Š” ํŒŒ์ผ์„ ํ•ด์„ํ•˜๊ณ  ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.