Webpack은 대표적인 자바스크립트 번들러 중 하나입니다. 번들러(Bundler)는 여러 개의 파일을 로직에 맞추어 하나의 파일로 합치는 도구입니다. 번들러는 다음과 같은 이유로 사용합니다.
Entry
//webpack.config.js
module.exports = {
entry: './src/index.js' // 디폴트
};
Output
// webpack.config.js
module.exports = {
entry: './src/index.js', // 디폴트
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js' // 디폴트
},
};
Loaders
// webpack.config.js
module.exports = {
entry: './src/index.js', // 디폴트
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js' // 디폴트
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
Plugins
// webpack.config.js
module.exports = {
entry: './src/index.js', // 디폴트
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js' // 디폴트
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
};
Mode
//webpack.config.js
module.exports = {
entry: './src/index.js', // 디폴트
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js' // 디폴트
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
],
mode: 'production'
};
Step 1: 프로젝트 초기화
mkdir project
cd project
npm init -y
Step 2: Webpack 및 필요 모듈 설치
npm install webpack webpack-cli --save-dev
npm install @babel/core babel-loader @babel/preset-env --save-dev
Step 3: Webpack 설정 파일 생성
// webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
],
},
mode: 'development',
};
Step 4: Babel 설정 파일 생성
//.babelrc
{
"presets": ["@babel/preset-env"]
}
Step 5: 자바스크립트 파일 작성
// src/index.js
const greet = () => {
console.log('Hello, Webpack!');
};
greet();
Step 6: HTML 파일 작성
// src/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Webpack Example</title>
</head>
<body>
<script src="index.js"></script>
</body>
</html>
Step 7: Webpack 실행
// package.json
"scripts": {
"build": "webpack"
}
package.json에 위의 스크립트 파일을 넣고, 터미널에서 npm run buld 을 실행하면, dist/bundle.js 파일이 생긴다. 이 것을 실험해 보려면, src/index.html 파일을 dist폴더로 옮기고, <script />을 <script src="bundle.js"></script> 로 고치고 실행한다.
터미널 창에서 이렇게 결과가 보인다면 webpack 설치가 성공한 것입니다.
> npm run build
> webpack@1.0.0 build
> webpack
asset bundle.js 1.52 KiB [emitted] (name: main)
./src/index.js 324 bytes [built] [code generated]
webpack 5.91.0 compiled successfully in 11195 ms
Step 8. css file을 main.js로 불러들이려면, 다음을 설치한다.
npm install --save-dev style-loader css-loader
//webpack.config.js 에 추가
module: {
rules: [
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
],
},
// src/index.js
import _ from 'lodash';
import './style.css';
const greet = () => {
const elementDiv = document.createElement("div");
element.innerHTML = _.join(["Hello","World"], " ");
elementDiv.classList.add('hello')
console.log('Hello, Webpack!');
retun elementDiv;
};
document.body.appendChild(greet());
// src/style.css
.hello {
color: red;
}
// package.json 에서 "script" 확인
"scripts": {
"build": "webpack",
...
},
터미날에서 "npm run build" 하면, 다음 처럼 성공을 확인 할 수 있음
asset bundle.js 73.4 KiB [emitted] [minimized] (name: main) 1 related asset
runtime modules 1.02 KiB 6 modules
.....
webpack 5.91.0 compiled successfully in 1630 ms
- 단일화 된 bundle.js와 index.html 만 서버에 올리면 됨.
- local에서 확인하려면, index.html 을 Live Server 로 열어 볼 수도 있음.
.json 과 .json5 의 차이점 (1) | 2024.06.03 |
---|---|
parcel - webapp 설치 (0) | 2024.05.30 |
Java를 이용한 웹 (0) | 2024.05.18 |
파이썬의 웹 (0) | 2024.05.18 |
프록시 서버 - Forward Proxy, Reverse Proxy (0) | 2024.05.18 |