JavaScript를 이용한 프로젝트를 진행하다 보면 Webpack, Babel을 설치하고 환경설정을 진행하곤 한다. 나도 React를 이용한 프로젝트를 진행할때마다 초반에 필수적으로 설치해야하는 라이브러리라고 생각만 하고 정확히 이게 뭘 하는지 모른채로 다운받곤 했다..
하지만 오늘부터는 정확히 Webpack이 무슨 역할을 하는지 알고! 프로젝트를 진행할때 설치하려고 한다 🤔 (Babel은 바로 다음 포스트에 다룰 예정)
Webpack은 Dependency(의존성)을 분석해서 여러개의 Module들을 하나로 묶어주는 역할, 즉 번들화 시켜주는 역할을 한다.
보통은 이런 역할을 하는 것을 Module Bundler 라고 부르며 Webpack은 여러개의 Module Bundler 라이브러리 중 가장 많이 쓰이는 라이브러리이다.
프로젝트를 진행하다 보면 위와 같이 필요한 라이브러리를 여러개 다운받게 되는데 Webpack은 이러한 라이브러리들을 Build라는 과정을 통해서 하나의 파일로 만들어주게 된다.
./src/index.js
이다.webpack.config.js
module.exports = {
entry: './path/to/my/entry/file.js', // 이런식으로 바꿀 수 있다.
};
./dist/main.js
이다.webpack.config.js
const path = require('path');
module.exports = {
entry: './path/to/my/entry/file.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'my-first-webpack.bundle.js',
};
webpack.config.js
const path = require('path');
module.exports = {
output: {
filename: 'my-first-webpack.bundle.js',
},
module: {
rules: [{ test: /\.txt$, use: 'raw-loader'}],
};
};
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin'); // npm을 통해 따로 설치해야함
const webpack = require('webpack'); // built-in plugin에 접근하기 위해
module.exports = {
module: {
rules: [{ test: /\.txt$, use: 'raw-loader'}],
},
plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })],
};
위의 예시에서 html-webpack-plugin
은 프로젝트에 대한 HTML 파일을 생성하고, 생성된 모든 Bundle들을 이 파일에 자동으로 삽입한다.
development
, production
, none
중 하나를 파라미터로 사용한다. (Default 값은 production 이다)development
: 빠르게 Build 된다.production
: 최적화 되어 Build 된다.none
: 아무 기능 없이 Build 된다.module.exports = {
mode: 'production',
};