React로 시작하는 프론트 개발은 필자(seolim)의 경험을 기반으로 작성되며 절대 정답이 아닙니다! 이점을 유념하며 읽기 바랍니다.
webpack is a static module bundler for modern JavaScript application
webpack 공식 페이지의 설명이다. 그래서 저게 뭔 소리냐, html에 집어넣을 자바스크립트 파일과 모듈을 하나로 묶어주는 빌드 툴이라는 의미다.
html을 작성해 보았다면 아래와 같이 한번쯤은 해봤을 것이다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>div_align_vertical</title>
<script src="./local_module1.js"></script>
<script src="./local_module2.js"></script>
<script src="https://web_module.com/module1.js"></script>
<script src="https://web_module.com/module2.js"></script>
...
</head>
<body>
...
</body>
</html>
기본적으로 html에 javascript파일을 삽입하기 위해선 위와같이 script를 모두 등록해주어야 하며 그 module에서 사용되는 module또한 모두 등록해주어야 한다...
생각만해도 끔찍하다. 프로젝트의 규모가 커지면 과연 그 과정을 수동으로 하는것이 가능은 한 이야기일까?
webpack은 연결된 모든 모듈과 js파일을 하나의 js파일로 bundling해준다. 여기에 js뿐만 아니라 설정된 css나 png와 같은 정적파일들도 설정만 해주면 일괄적으로 하나의 js파일로 묶어서 처리할 수 있다.
일단 어떻게 동작하는지 보자.
/* main.js */
const { module } = require('./module.js')
const { lib } = require('./lib.js')
function main() {
module()
lib()
}
main()
/* lib.js */
module.exports.lib = function () {
console.log('This is lib')
}
/* module.js */
module.exports.module = function () {
console.log('This is module')
}
위 세파일을 srcs라는 디렉토리에 넣어두고 root 디렉토리에 webpack.config.js을 작성한다. webpack.config.js는 webpack을 실행할 때 참고하는 설정파일이다.
module.exports = {
entry: {
main: "./srcs/main.js", /* 최초에 webpack 빌드가 시작되는 위치 */
},
output: {
filename: 'bundle.js', /* bundling한 결과물 */
}, /* 설정하지 않으면 자동으로 dist 폴더에 생성됨 */
}