웹서비스가 방대해지며, 코드를 분리한 모듈로 관리를 해야했다. 그래서 모듈 시스템(Commonjs, AMD, UMD, ESM)이 등장했다. 이 모듈 시스템을 효과적으로 사용하기 위해 번들러webpack
rollup
esbuild
vite
가 등장했다.
이를 자동화 시켜주는 것이 번들러이다.
등장 순서는 webpack
rollup
esbuild
vite
이다.
한 줄 요약: 통합에 집중, 가장 방대한 커뮤니티를 가진 번들러
특징:
코드예시:
//Webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: {
home: './pages/home.js',
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: ["babel-loader"],
},
],
},
plugins: [new HtmlWebpackPlugin()],
};
한줄 요약: 확장. 번들의 결과물에 집중하여 라이브러리 구축 시 추천
2017년 이후 나온 모듈번들러
정체성은 확장이다. 같은 소스코드를 다양한 환경에 맞게 빌드할 수 있다. 그래서 어플리케이션을 만들 땐 Webpack, 라이브러리를 만들 땐 Rollup이란 말이 있다.
특징
Rollup의 사용방식
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import { terser } from 'rollup-plugin-terser';
const production = !process.env.ROLLUP_WATCH;
export default {
input: 'src/main.js',
output: {
file: 'public/bundle.js',
format: 'iife',
sourcemap: true,
},
plugins: [
resolve(),
commonjs(),
production && terser(),
],
};
한줄 요약: 정말 빠른 빌드 속도를 자랑하는 번들러!
이전까지는 모두 JavaScript기반이였다. 하지만 JavaScript는 성능상 한계가 있다. ESBuild는 Go로 제작되어 10배나 빠르다.
빠른 이유
단점
한줄 요약: 빠르고 만능, ESBuild와 Rollup의 장점을 합쳤다.
바이트인지 알았는데 비트이다.
특징: 빠르다!
native ES modules
기반의 강력한 개발서버esbuild
로 파일들을 통합하고 rollup
을 통해 번들링0
에 가까움,import
가능Direct Import
구문에 대해 Preload
하도록 함으로써, 네트워크 비용 줄임@vitejs/plugin-legacy
플러그인을 제공 해줍니다.<root>/index.html
파일이 빌드를 위한 진입점입니다.라이브러리 모드
를 설정해야 합니다.