배포 자동화를 구축하기에 앞서, 현재 진행 중인 프로젝트가 CRA에 내장된
webpack.config.js
파일을 사용하고 있었기 때문에, 좀 더 나은 웹팩 (ex. 요새 핫한 vite와 같은)으로 바꾸는 게 좋지 않을까? 하는 생각을 하다가, 막연히 "최신 웹팩으로 교체해야 해!" 라는 이유보다는 좀 더 근본적인 원인을 파악해보기 위해 webpack이 하는 일과 필요성에 대해 자세히 알아보기로 했다.
💡 모듈(Module)
관련된 데이터와 함수들이 묶여서 모듈을 형성하며, 주로 파일 단위로 관리된다.
ex) Modal 은 isShow 라는 상태와 show, close 함수를 가진 하나의 모듈이다.
💡 번들러(Bundler)
모듈별로 나누어진 파일을 연관되어 있는 단위로 묶어 하나의 파일로 만들어주는 역할을 한다.
→ 모듈 또는 외부 라이브러리 간의 의존성을 쉽게 관리할 수 있다.
// webpack.config.js
// Single Page Application
module.exports = {
entry: './src/index.js'
}
// Multi Page Application
modul.exports = {
entry: {
login: './src/LoginView.js'
main: './src/MainView.js'
}
}
// webpack.config.js
var path = require('path');
module.exports = {
output: {
filename: 'my-first-webpack.bundle.js'
path: path.resolve(__dirname, './dist')
}
}
→ output: './dist/bundle/js'
// webpack.config.js
module.exports = {
module: {
rules: [{ test: /\.?js$/, use: 'babel-loader' }],
},
};
// webpack.config.js
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
plugins: [
new HtmlWebpackPlugin(), // 웹팩으로 빌드한 결과물로 HTML 파일을 생성해주는 플러그인
new webpack.ProgressPlugin() // 웹팩의 빌드 진행율을 표시해주는 플러그인
]
}