728x90
목차
-웹팩이란?
-entry
-output
-loaders
-plugins
-mode
-웹팩 설치 및 사용법
웹팩이란?
웹팩은 오픈 소스 자바스크립트 모듈 번들러로써 여러개로 나누어져 있는 파일들을 하나의 자바스크립트 코드로 압축하고 최적화하는 라이브러리이다.
모듈 번들러는 다음과 같은 장점이 존재한다.
- 여러 파일의 자바스크립트 코드를 압축하여 최적화 할 수 있기 때문에 로딩에 대한 네트워크 비용을 줄일 수 있다.
- 모듈 단위로 개발이 가능하여, 가독성과 유지보수가 쉽다.
- 최신 자바스크립트 문법을 지원하지 않는 브라우저에서 사용할 수 있는 코드로 쉽게 변환시켜 준다(예를 들면 typescript).
물론, 수 많은 자바스크립트 파일이 하나의 파일로 묶인다면 초기 로딩 속도가 커질 수 있으나, 웹팩에서는 청크, 캐시, 코드 스플릿 개념들을 도입하면서 이 문제를 해결하고 있다.
웹팩은 Entry, Output, Loaders, Plugins, Mode로 구성되어 있으며, 각각의 역할은 아래와 같다.
Entry
- entry는 웹팩이 빌드할 파일의 시작 위치를 나타내준다.
- entry 지점으로부터 import되어 있는 다른 모듈과 라이브러리의 연관성을 찾는다.
- entry의 디폴트로 설정된 값은 ./src/index.js 이다.
module.exports = {
entry: ' ./src/index.js'
};
Output
- output은 웹팩에 의해 생성되는 번들을 내보낼 위치와 파일의 이름을 지정한다.
- output의 기본값은 ./dist/main.js 이다.
const path = require('path');
module.exports = {
entry: './path/to/my/entry/file.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
}
};
Loaders
- loaders를 통해 자바스크립트 파일이 아닌 파일들도 유효한 모듈로 변환시켜준다.
- loaders의 설정은 싱글 모듈에 대한 rules 프로퍼티를 정의해야 하며, rules 프로퍼티는 test와 use를 필수 프로퍼티로 가진다.
- test 프로퍼티는 변환해야하는 파일 또는 파일들을 식별하는 역할이다.
- use 프로퍼티는 변환되어야 하는 파일에 대하여 어떤 로더를 사용해야하는지 설정한다.
const path = require('path');
module.exports = {
output: {
filename: 'my-first-webpack.bundle.js'
},
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
}
};
Plugins
- 로더가 파일단위로 처리하는 반면 플러그인은 번들된 결과물을 처리한다.
- 번들된 자바스크립트를 난독화 한다거나 특정 텍스트를 추출하는 용도로 사용할 수 있다.
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); //to access built-in plugins
module.exports = {
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
};
Mode
- mode는 웹팩을 세팅함에 있어서 development, production, none 중 하나를 파라미터로 사용합니다.
- “production”은 최적화되어 빌드된다.
- “development”는 빠르게 빌드된다.
- “none”은 아무 기능 없이 웹팩으로 빌드된다.
module.exports = {
mode: 'production'
};
Reference
웹팩 설치 및 사용법
번들링을 할 디렉토리에 들어간 후, 터미널에서
npm init
npm install -D webpack webpack-cli
npx webpack-cli .src/index3.js
차례로 해준 뒤,
npx create-react-app [파일명]
를 치면 웹팩으로 빌드가 가능하다.(시간은 좀 걸린다.)
728x90
'프론트엔드 > React' 카테고리의 다른 글
[React/javascript] 댓글 CRUD 구현하기 (0) | 2022.04.22 |
---|---|
[React] 생명주기 함수 (0) | 2022.04.22 |
[React] 틱택토게임(2) 승자정하기 (0) | 2022.04.15 |
[React]틱택토게임 만들기 (0) | 2022.04.14 |
[React] 타자 입력 시마다 value값 변하는 form만들기 (0) | 2022.04.14 |