webpack
설치npm init -y
npm i webpack webpack-cli -D
-D
: 개발 단계에서만 사용하도록 설치package.json
➡ devDependencies
에 들어가게 된다.webpack.config.js
// webpack.config.js
const path = require("path");
// 경로를 조합해주는 node.js API
module.exports = {
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist"),
// npm build (webpack) 실행 시 dist 폴더에 bundle.js 생성됨
}
}
npm i -D style-loader css-loader file-loader
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
// use 배열 안의 Loader들은 뒤에서부터 적용된다.
// css-loader로 읽고 style-loader로 html에 style 태그 추가
},
{
test: /\.(jpg|png|gif)$/,
use: [
{
loader: "file-loader",
options: {
name: "[name].[ext]",
}
}
]
}
]
}
}
html-webpack-plugin
: 번들 파일이 들어가있는 index.html을 자동으로 생성해주는 플러그인clean-webpack-plugin
: build 폴더에 불필요한 파일 삭제mini-css-extract-plugin
: css 파일을 별도로 만들어서 build 하고싶을 때 사용npm i -D html-webpack-plugin clean-webpack-plugin
// webpack.config.js
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
module.exports = {
plugins: [
new HTMLWebpackPlugin({
template: "index.html"
// template -> 기존에 만들었던 html파일을 바탕으로 생성
}),
new CleanWebpackPlugin(),
],
}
개발서버
npm i webpack-dev-server -D
// webpack.config.json
module.exports = {
devServer: {
static: {
directory: path.resolve(__dirname, "dist"),
},
port: 8080,
},
}
// package.json
"scripts": {
"start": "webpack serve --open --mode=development",
}