https://humanwater.tistory.com/2
( * 현재 가장 많이 사용하고 있는 Webpack 4버전 기준. )
( * 선언방법은 어플리케이션의 루트 경로에 webpack.config.js 파일을 만들고, 그 내부에 정의하면 된다. )
//* root(node_modules이 설치된 디렉토리)의 webpack.config.js
module.exports = {
entry: "./App.js",
}
[참고] https://webpack.js.org/concepts/entry-points/
//* Entry를 정의했던 동일한 webpack.config.js
//* 미리 root 디렉토리에 dist 폴더를 만들어두고, bundle.js라는 이름으로 output 지정.
module.exports = {
entry: './App.js',
output: {
path: './dist',
filename: 'bundle.js'
}
}
[참고] https://webpack.js.org/concepts/output/
[참고] https://webpack.js.org/concepts/
더 나아가서, ES6 형식으로 작성된 자바스크립트 코드들을 ES5로 바꿔 컴파일 시켜주는 바벨(Babel)이라는 로더도 있있다.
//* module 내부에서 로더에 대한 정의를 선언.
//* rules 내부의 test는 적용할 파일의 타입을 선언.(정규식 사용 가능)
//* 이어서, use는 test에 선언한 파일타입에 맞는 로더를 정의하면 된다.
//* exclude에는 로더 적용을 제외시킬 파일을 정의
//* (node_modules 디렉토리 내부에 있는 노드모듈까지 굳이 번들링 할 필요는 없기에....)
module.exports = {
entry: './App.js',
output: {
path: './dist',
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.txt$/,
exclude: /node_modules/,
use: 'raw-loader'
}
]
},
}
로더(Loader)와의 차별점을 두면서 설명이 가능할 것 같다. 로더 같은 경우 위의 로더 선언 코드에서 보듯이, 파일 단위로 작업이 이루어지는 반면, 플러그인(Plugin) 같은 경우 번들링 된 결과물에 대해서 적용할 수 있는 속성이다.
크게 예를 들면, 번들링 된 js 파일에 대한 난독화(UglifyJsPlugin 사용)를 하거나, 번들된 css, js 파일들을 html 파일에 주입(html-webpack-plugin 사용) 하는 역할들을 한다.
//* 'plugin' 이 아닌 'plugins' 에 주의!
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './App.js',
output: {
path: './dist',
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.txt$/,
exclude: /node_modules/,
use: 'raw-loader'
}
]
},
plugins: [
new HtmlWebpackPlugin(),
]
}
지금까지, 웹팩의 주요 구성요소인 Entry, Ouput, Loader, Plugin의 개념과 사용 방법에 대해서 알아보았다.
웹팩 4버전 부터는 Mode라는 속성이 지원되면서 별도의 설정파일 없이 Production 모드와, Development 모드로 빌드가 가능하게 되었다고 한다. 그리고 최적화 성능 향상으로 인해 앱의 반응 속도가 98%까지 올라갔다고 하는데, 자세한 내용은 아래 URL을 참고하면 좋을 듯 하다.
[참고] https://meetup.toast.com/posts/153
[webpack] 2) 번들링(Bundling) 개념 및 사용 이유 (0) | 2020.06.30 |
---|---|
[webpack] 1) 웹팩의 정의, 모듈(Module) (1) | 2020.06.29 |
댓글 영역