hmk run dev

webpack 개념과 적용방법 본문

Front-End

webpack 개념과 적용방법

hmk run dev 2022. 4. 5. 23:02

webpack이란?

 

- 모듈 번들링이라고 한다.

- html 파일에 들어가는 JS파일들을 하나의 파일로 만들어주는 방식을 모듈 번들링이라고 한다.

> 쉽게말해 다수의 JS파일들을 하나의 JS파일로 만들어주는 것을 webpack이라고 할 수 있다.

사용하는 이유

- SPA가 나오기 이전 html을 요청해 뿌려서 화면을 보여줬는데

SPA가 등장한 이후 하나의 HTML페이지에 여러가지 자바스크립트 파일이 포함된고 연관되어 있는 JS 종속석 있는 파일들을 하나의 파일로 묶어줘 관리하기가 편하다.

 

- 파일을 컴파일 할 때, 여러 모듈을 읽어오는데 시간이 오래거리는 것을 해결하기 위해 여러 파일을 하나의 파일로 번들링 해준다.

> 하나의 JS파일로 만들어 웹페이지 성능 최적화

 

webpack 설치

 

1. npm init -y

 

2. npm i -D webpack webpack-cli

 

3. npm install webpack --save -dev

 

> package.json 파일이 생성되고 다음과 같이 나오면 올바르게 설치된 것

{	...
  "devDependencies": {
    "webpack": "^4.43.0",
    "webpack-cli": "^3.3.11"
  }
  	...
}

 

4. 루트 디렉토리에 webpack.config.js 파일 생성

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

module.exports = {
    entry: "./src/main.ts", // 번들링 시작 위치
    output: {
        path: path.join(__dirname, "/dist"), // 번들 결과물 위치
        filename: "bundle.js",
    },
    module: {
        rules: [
            {
                test: /[\.js]$/, // .js 에 한하여 babel-loader를 이용하여 transpiling
                exclude: /node_module/,
                use: {
                    loader: "babel-loader",
                },
            },
            {
                test: /\.ts$/, // .ts 에 한하여 ts-loader를 이용하여 transpiling
                exclude: /node_module/,
                use: {
                    loader: "ts-loader",
                },
            },
        ],
    },
    resolve: {
        modules: [path.join(__dirname, "src"), "node_modules"], // 모듈 위치
        extensions: [".ts", ".js"],
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: "./public/index.html", // 템플릿 위치
        }),
        new webpack.HotModuleReplacementPlugin()

    ],
    devServer: {
        host: "localhost", // live-server host 및 port
        port: 5500,
        hot: true // hot reload
    },
    mode: "development", // 번들링 모드 development / production
};

 

npm run build 시 dist 디렉토리 안으로 번들 js와 index.html이 들어간다!

webpack-dev-server

1. npm i webpack-dev-server

 

package.json의 scripts

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack-dev-server",
    "build": "webpack",
    "dev:": "webpack-dev-server" // npm run dev로 실행
  },

Hot Module Reload(HMR)

webpack.config.js에서 설정해둔

entry: "./src/main.ts" >> main.ts의 변화를 감지해 js파일로 컴파일 후 빌드!

쉽게 말해 vscode의 plugin 중 live server의 기능을 해준다고 볼 수 있다! 

'Front-End' 카테고리의 다른 글

wasm과 webworker를 도입해보다...!  (0) 2023.04.16
webpack과 vite  (0) 2022.06.15
webpack 이전의 세계  (0) 2022.06.15
package.json 구조  (0) 2022.04.15
clientX, offsetX, pageX, screenX 차이점  (0) 2022.04.15
Comments