
npm init -y 패키지를 생성(초기화) 해준다.npm init -y
webpack과 webpack-cli를 설치한다. npm install -D webpack webpack-cli

웹팩은 우선 번들링하길 원하는 파일을 확인하고(entry), 여기에 import한 라이브러리나 코드가 있으면 해당 코드를 모두 인식해서 하나의 번들(output)로 압축한다.
webpack 설정 파일인 webpack.config.js 파일에 entry와 output 정보를 먼저 작성한다.
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'), // 깃허브 페이지 배포 시 `docs`로 변경
filename: 'app.bundle.js',
},
};
src/data.js)을 최상위 js 파일(src/script.js)에서 불러올 수 있도록 export 해준다.
src/script.js)에서 하위 js 파일(src/data.js)을 불러온다.
npx webpack 명령어를 이용해 src 폴더 안에 있는 js 파일을 번들링한다. 또는 package.json 파일에 "build": "webpack" 스크립트를 추가해두면 npm run build 명령어로도 번들링 할 수 있다.npx webpack
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack" <- 스크립트 추가
},
js파일을 번들링하면 아래와 같이 output으로 지정해둔 dist 폴더가 생기고, dist/app.bundle.js 파일을 확인해 보면 webpack이 최소화(minifiy)한 코드를 확인할 수 있다.
node dist/app.bundle.js로 실행해보면 번들링한 코드가 정상적으로 출력되는지 확인할 수 있다.


webpack은 JavaScript와 CSS를 함께 배포해야 할 때, 좀 더 쉽게 배포할 수 있게 로더(loader)를 제공한다.
css-loader는 CSS를 JS파일 내에서 불러올 수 있게 해주고, style-loader는 불러온 CSS를 style요소 내에 담아주는 역할을 한다. npm으로 css-loader와 style-loader를 설치한다.
npm i -D css-loader style-loader
const path = require("path");
module.exports = {
entry: "./src/index.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "app.bundle.js",
},
module: {
rules: [
{
test: /\.css$/, // 파일명이 .css로 끝나는 모든 파일에 적용
// 배열 마지막 요소부터 오른쪽에서 왼쪽 순으로 적용
// 순서 주의 : 먼저 css-loader가 적용되고, styled-loader가 적용되어야 한다.
use: ["style-loader", "css-loader"],
// loader가 node_modules 안의 있는 내용도 처리하기 때문에
// node_modules는 제외해야 한다.
exclude: /node_modules/,
},
],
},
};
npm i -D html-webpack-plugin
const path = require("path");
const HtmlWebpackPlugin = require('html-webpack-plugin') // <- 플러그인 불러오기
module.exports = {
entry: "./src/index.js",
output: {
path: path.resolve(__dirname, "dist"),
filename: "app.bundle.js",
},
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
exclude: /node_modules/,
},
],
},
plugins: [new HtmlWebpackPlugin({
template: path.resolve(__dirname, "src", "index.html")
})]
};
src/index.html 파일을 번들링하여 dist/index.html 파일을 새로 생성한 것을 볼 수 있다.
app.bundle.js 파일에서 넣어주고, JavaScript는 html-webpack-plugin이 자동으로 <script defer="defer" src="app.bundle.js"></script> 스크립트 요소를 추가해준 모습을 볼 수 있다.
dist/index.html 에서 기존에 연결되어 있던 CSS파일과 JS파일들의 연결 코드들을 삭제한다.
