webpack
모듈 번들러
install
1 | $ npm install -g webpack |
set env
1 | $ npm install babel-core babel-loader babel-preset-env babel-preset-react babel-preset-stage-0 --save-dev |
2 | $ npm install react react-dom --save |
set config
index.js가 있는 프로젝트의 루트 폴더에 이 파일을 만들어야 한다.
example
1 | # webpack.config.js |
2 | const path = require('path') |
3 | module.exports = { |
4 | // mode: development, production, none |
5 | mode: 'none', |
6 | // 클라이언트의 시작파일을 지정 모든 의존관계 트리를 자동으로 빌드해준다. |
7 | entry: "./src/index.js", |
8 | // dist/assets/bundle.js라는 자바스크립트 파일에 출력하라고 지정 |
9 | output: { |
10 | path: path.join(__dirname, "dist/assets"), |
11 | filename: "bundle.js" |
12 | }, |
13 | module: { |
14 | // 모듈에 따라 실행히야 하는 로더의 룰을 구성 |
15 | rules: [ |
16 | { |
17 | // 처리해야할 파일의 정규식 |
18 | test: /\.js$/, |
19 | // 제외할 정규식 |
20 | exclude: /(node_modules)/, |
21 | loader: 'babel-loader', |
22 | query: { |
23 | presets: ['env', 'stage-0', 'react'] |
24 | } |
25 | } |
26 | ] |
27 | } |
28 | } |
run
웹팩은 정적으로 실행된다.
보통 앱을 서버에 배포하기 전에 번들을 만든다.
mode
mode: development, production, none
- in config
1 | module.exports = { |
2 | mode: 'production' |
3 | }; |
- pass by CLI
1 | webpack --mode=production |
source map
1 | const path = require('path') |
2 |
|
3 | module.exports = { |
4 | mode: 'production', |
5 | entry: "./src/index.js", |
6 | output: { |
7 | path: path.join(__dirname, "dist/assets"), |
8 | filename: "bundle.js", |
9 | // 소스 맵 이릅 |
10 | sourceMapFilename: 'bundle.map' |
11 | }, |
12 | //소스 맵 사용 |
13 | devtool: '#source-map', |
14 | module: { |
15 | rules: [ |
16 | { |
17 | test: /\.js$/, |
18 | exclude: /(node_modules)/, |
19 | loader: 'babel-loader', |
20 | query: { |
21 | presets: ['env', 'stage-0', 'react'] |
22 | } |
23 | } |
24 | ] |
25 | } |
26 | } |