[๐Ÿ“š ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ] Webpack๊ณผ ์”จ๋ฆ„ํ•œ ๋‚˜..

dsfasdยท2022๋…„ 11์›” 23์ผ
0

๊ณผ์ œ์ค‘์—์„œ ์›นํŒฉ์œผ๋กœ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๊ณผ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

๊ณ„์† ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž˜๋ชป์จ์„œ ๊ทธ๋Ÿฐ์ง€
์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ• ์ง€ ์• ๋ฅผ ๋จน๋‹ค๊ฐ€ ๋“œ๋””์–ด ์„ฑ๊ณตํ–ˆ๋‹ค. ใ… ใ… 


1. ํ˜„์žฌ ๋‚˜์˜ ํŒŒ์ผ๋“ค์„ ์ „๋ถ€ src ํด๋”๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.


2. npm init -y ์œผ๋กœ package.json ํŒŒ์ผ์„ ์ƒ์„ฑ

package.jsom ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค. (์œ„ ํŒŒ์ผ ์žˆ๋‹ค๋ฉด ์ƒ๋žต)

{
  "name": "fe-sprint-my-agora-states",
  "version": "1.0.0",
  "description": "",
  "main": "./src/script.js", // ์• ๋จน์€ ๋ถ€๋ถ„.
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack" // ์›นํŒฉ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž‘์„ฑํ•˜๊ธฐ. 
  },

main์—๋Š” ์‹œ์ž‘์ง€์ ์„ ์ž…๋ ฅํ•˜๋ฉด ๋˜๋Š” ๋“ฏํ–ˆ๋‹ค.
html ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”๊ฑด๊ฐ€? ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋ฉ”์ธ์œ„์น˜์˜ js ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

3. ์›นํŒฉ , ์„ค์น˜ ๋ฐ webpack.config.js ํŒŒ์ผ ์ž‘์„ฑ

์„ค์น˜ ๋ชฉ๋ก

npm install -D webpack webpack-cli // ์›นํŒฉ ์„ค์น˜
npm i -D css-loader style-loader // ์Šคํƒ€์ผ ๋กœ๋” ์„ค์น˜ 
npm i -D html-webpack-plugin // html ์›นํŒฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ 

webpack.config.js

const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  entry: "./src/script.js", // ์‹œ์ž‘์ง€์  ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ • 
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "app.bundle.js",
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ["style-loader", "css-loader"],
        exclude: /node_modules/,
      },
    ],
  },
  plugins: [new HtmlWebpackPlugin({
    template: path.resolve(__dirname, "src", "index.html")
  })]
};

4. ํŒŒ์ผ ๊ฒฝ๋กœ

  • src/ css ํŒŒ์ผ -> ๋‹น์—ฐํžˆ ๊ฑด๋“œ๋ฆด๊ฑฐ x
  • src/script.js -> ๋งจ์œ„์— require('./style.css'); ์ถ”๊ฐ€
  • src/index.html -> script,css ํŒŒ์ผ ๊ฐ™์€ ํด๋” ์•ˆ์ด๋‹ˆ ๊ฒฝ๋กœ ์ž‘์„ฑ ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธ ( ์ด ๋ถ€๋ถ„์€ ๊ทผ๋ฐ ๊ทธ๋ƒฅ html ์ž˜ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋˜๋Š”๊ฑฐ)

๋‚˜๋Š” ์šฐ์„  script ํŒŒ์ผ์— require ์ž‘์„ฑํ•ด์ฃผ์ง€ ์•Š์•„์„œ dist/index.html ํŒŒ์ผ์ด ๊ฒฝ๋กœ๋ฅผ ์ œ๋Œ€๋กœ ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•ด์„œ ํ—ค๋งธ๋‹ค ๐Ÿ˜‡


5. ๋ฒˆ๋“ค๋ง

npx webpack 

์‹คํ–‰ํ•˜๋ฉด dist ํด๋” ์ƒ์„ฑ > app.bundle.js / index.html ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค.
์ฒ˜์Œ์—๋Š” ๋‹นํ™ฉ์Šค๋Ÿฌ์›Œ์„œ dist ํด๋” ๋‚ด์˜ index.html ํŒŒ์ผ๋„ ์ˆ˜์ •ํ•ด์•ผํ•˜๋‚˜? ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ €๊ฑฐ๋Š” ๋ฒˆ๋“ค๋ง ํ›„์— ์ƒ์„ฑ๋˜๋Š” ์•ค๋ฐ ๋‹น์—ฐํžˆ ์ˆ˜์ •ํ• ๊ฒŒ ์žˆ๋‚˜.. ์‹ถ์—ˆ๋‹ค.


6. ๊ฒฐ๊ณผ

src/index.html
dist.index.html ํŒŒ์ผ์ด ๋‘˜๋‹ค ๋™์ผํ•˜๊ฒŒ ์ž‘๋™๋˜๋ฉด ์„ฑ๊ณต์ด๋‹ค.


ํ—ท๊ฐˆ๋ฆฐ ๋ถ€๋ถ„

package.json ํŒŒ์ผ์—์„œ

"main": "./src/script.js", ์ด ๋ถ€๋ถ„์€ ๋ฃจํŠธ ๊ฒฝ๋กœ๋กœ ์„ธ๋ถ€ ๊ฒฝ๋กœ๊นŒ์ง€ ์ž˜ ์ž‘์„ฑํ•ด์ฃผ๊ณ .

src/script.js ํŒŒ์ผ์—์„œ

css ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ๊ผญ require ์ž˜ ์“ฐ์ž..

profile
๊ธฐ๋ก์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„!

0๊ฐœ์˜ ๋Œ“๊ธ€