- webpack : 웹팩의 코어
- webpack-cli : 웹팩을 커맨드라인에서 사용
- webpack-dev-server : 실시간 개발 서버 환경을 구동할 수 있게 해줌
- 웹팩은 loader를 사용하여 다른 확장자를 가진 다양한 종류의 파일들을 번들링한다.
- style-loader : 변환된 css 파일을 <style> 태그로 감싸서 삽입
- css-loader : css 파일을 자바스크립트가 이해할 수 있도록 변환
- babel-loader : jsx, es6+ 문법을 트랜스파일링
```
npm install html-webpack-plugin clean-webpack-plugin
```
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
module.exports = {
entry : "./src/index.js",
mode : "development",
module:{
rules:[
{
test:/\\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: "babel-loader",
options:{presets:["@babel/env"]}
},
{
test:/\\.css$/,
use:["style-loader", "css-loader"]
}
]
},
resolve:{
extensions: ["*", ".js", ".jsx"],
alias:{
utils:path.resolve(__dirname, 'src/utils/'),
'@':path.resolve(__dirname, 'src/')
}
},
output:{
path: path.resolve(__dirname, "dist/"),
publicPath: "/dist/",
filename: "bundle.js"
},
devServer:{
// 정적 파일 경로
contentBase : path.join(__dirname, "public/"),
port:8000,
publicPath: "http://localhost:8000/dist/",
hotOnly: true
},
plugins:[
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template:'./public/index.html'
}),
new CleanWebpackPlugin(),
]
}