한번쯤 들어본 FE 기술
module bundling, webpack
프론트루나
2024. 9. 17. 16:36
반응형
웹팩 ? 프론트엔드 애플리케이션 배포를 위해 가장 많이 사용하는 도구, 번들러
module bundler
HTML, CSS, Javascript 등의 자원을 각각의 모듈로 보고 이를 조합해 하나의 묶음으로 번들링(빌드)하는 도구
webpack
- 프로젝트의 구조를 분석하고 자바스크립트 모듈을 비롯한 관련 리소스들을 찾은 다음, 이를 브라우저에서 이용할 수 있는 번들로 묶고 패킹하는 모듈 번들러.
- 여러개의 파일을 하나의 파일로 합쳐주는 모듈 번들러.
- 자바스크립트 어플리케이션을 위한 정적 모듈 번들러. 여러 의존 관계에 있는 모듈들을 하나의 js 파일로 번들링 하는 역알.
- 플러그인을 끼우면 번들링 뿐만 아니라 훨씬 확장적인 기능을 사용할 수도 있음.
장점
- 의존 모듈이 하나의 파일로 번들링 되기 떄문에, 별도의 모듈 로더가 필요 없가.
- html파일에서 스크립트 태그로 파일을 로드해야 하는 번거로움을 줄일 수 있다.
- 모듈 시스템 관리
- 로더 사용
- 빠른 컴파일
webpack의 핵심개념
- entry : 내부적인 의존성 그래프의 빌드를 시작하기 위해 webpack이 어디를 향해야 하는지 설정.
module.exports = {
entry: './path/to/my/entry/file.js'
};
- output : webpack이 만들어낸 번들을 저장할 위치, 이름을 설정.
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'
}
};
// ./dist라는 경로에 번들링된 모듈이 my-first-webpack.bundle.js라는 이름으로 저장된다.
- Loaders : Webpack이 이해할 수 있는 건 자바스크립트, json 파일뿐이다. 따라서 loader 설정을 통해 다른 타입의 파일을 처리하고, 어플리케이션이 사용할 수 있는 형태로 변환하고, 의존성 그래프에 추가하는 역할을 수행시킬 수 있음.
- plugins : 플러그인 기능을 통해서 기능을 확장 시킬 수 있음.!!
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in pluginsmodule.exports = {
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
};
- mode : production, development, none 설정함으로써, webpack을 각 환경에 맞게 일치시킬 수 있다.
module.exports = {
mode: 'production'
};
반응형