나에게 build는 단순히 배포하기 전에 거쳐야 하는 단계.
당연히 거쳐야 하는 단계라는 생각에 뭐하는 단계이지? 왜 쓰는 거지? 와 같은 의문을 가지지 않았다.
이번에 팀 프로젝트를 webpack으로 build하면서 나오는 오류와 이점들을 경험하며 build의 중요성을 알아가고 있다. 프로젝트 build의 경험을 기록하여 webpack에 대해 복습하고 정리해보자.
📁 project-HelloWorld
├── client/
│ ├── assets/
│ ├── dist/
│ ├── public/
│ │ └── index.html
│ ├── src/
│ └── webpack.config.js
├── server/
│ └── server.js
└── package.json
webpack을 실행하기 위해 npm 으로 cli와 함께 설치.
npm install -d webpack webpack-cli
<style></style>
태그 안에 넣어준다. module.exports = {
mode: 'developement',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, './dist'),
filename: 'bundle.js'
},
module: {
rules: [{
test: /\.(svg|png|jpg|gif|mp4)$/,
loader: 'file-loader',
options: {
name: 'assets/[contenthash].[ext]',
},
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
}]
},
plugins: []
}
여러 플러그인과 loader를 적용하고 한번에 빌드가 성공할 것이라고 생각했다. 하지만 실상은 끝나지 않는 오류의 늪이였다.
처음 설정을 마치고 npm run build를 해보았다. 그 순간 entry의 src/index.js 찾지 못한다는 오류 메세지를 보게 되었다. 무엇이 문제였던 걸까?
이 오류를 찾아보니 webpack.config.js파일의 경로 문제였다. package.json에서 따로 경로를 설정해주지 않을 경우 루트폴더를 기준으로 webpack을 실행하기 때문이다. --config 플래그를 사용하여 config 경로를 설정해 주었더니 webpack 파일을 찾아 build를 할 수 있었다.
// package.json
"script": {
"build": "webpack --config ./client/webpack.config.js"
}
webpack 커스텀하는 방법도 방대하고 어렵다는 이야기들이 자주 보였는데
직접 해보고 나니 역시 하나하나 배워나가야할 것이 많다고 느꼈다. 그리고 빌드를 하니 용량이 줄어듦과 동시에 html에 자동으로 bundle된 js를 연결해주는 것을 보고 webpack으로 프로젝트를 최적화시켜 퍼포먼스를 높일 수 있을 것이라 기대해본다.