본문 바로가기
프로그래밍/react

[220418] webpack이란?

by 한코코 2022. 4. 19.

프론트엔드를 한다면 필수적으로 알아야할 webpack.

프론트엔드 개발을 하지 않더라도 알아두면 좋은 webpack.

 

webpack이란?

html에 들어가는 js 파일들을 뭉쳐서 하나로 만들어주는 방식을 모듈 번들링(=webpack_)이라고 한다.

 

굳이 하나로 뭉쳐서 하나로 만들어야하는 이유는?

1. 한 페이지를 구성하기 위해 존재하는 여러 파일들을 하나의 파일로 만들어 읽기때문에, 웹페이지 성능이 최적화된다.

2. 혼자서 프로그램을 작성할때도 변수명이 겹치는 것을 파악하기 힘든데, 여럿이서 사용한다면 더 힘들어진다. 하지만 하나의 파일로 묶어줌으로써 개발할때 편리해진다.

 

 


 

기초개발 환경세팅

test폴더를 만들고 그 안에 index.html, dist폴더, src폴더를 만든 후 webpack 라이브러리를 설치한다.

$ npm install -D webpack webpack-cli

 

 

현재 합칠 파일을 webpack으로 뭉친다

(첫번째 코드가 안될경우, npx를 붙인 두번째 코드를 입력하면 실행가능.)

$ webpack-cli ./src/index.js
$ npx webpack-cli ./src/index.js

 

 

실행이 끝나면 dist 폴더 안에 번들된(=하나로 뭉친) 파일이 생긴다.

 

 

 

html파일 안에 src > index.js 파일을 링크를 걸어서 브라우저에서 실행시키면 될 것 같지만 안된다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript" src="./src/index.js"></script>
</body>
</html>

 

 

대신 번들되어서 dist폴더 안에 생긴 main.js 폴더를 링크해서 렌더하면 실행이 된다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript" src="../dist/main.js"></script>
</body>
</html>

 


webpack.config.js를 통해 번들하기

webpack.config.js 파일을 생성한다.

module.exports = {
    entry: "./src/index.js"
}

 


한꺼번에 리액트 초기설정하기

 

다음 코드 중 하나를 입력하면 웹팩이 실행이 된다.

$ webpack
$ npx webpack

 

안될 경우, 라이브러리를 설치하고 실행하면 된다.

$ npm insall -g webpack webpack-cli

 

설치가 된 상태에서 npm run eject 코드를 실행하면 편집할 수 있도록 script 폴더 config라는 폴더 생긴다.

이러면 이 안에서 babel, webpack.config.js도 모두 설정이 되어있다.

 

 


그 외에 궁금한 점은 웹팩 공식 홈페이지에서 찾아보자

https://webpack.kr/guides/hot-module-replacement/#enabling-hmr

댓글