카테고리 없음
Webpack Configuration
jimanfe
2022. 8. 1. 14:29
webpack 설정파일은 configuration 객체를 export 한다.
webpack 은 이 설정에 들어간 프로퍼티에 따라 처리한다.
설정은 표준 node js commonjs 모듈이기 때문에 다음을 따를 수 있다.
- 다른 파일을 require 메서드로 import
- npm 라이브러리를 require 메서드로 사용
- 자바스크립트 문법 사용가능
- 재사용되는 값 변수화
- 삼항연산자와 같은 표현식 사용가능
- 설정 일부를 생성하기위해 함수 작성 및 실행
기술적으로 가능하지만 피해야되는 것들은 다음과 같다.
- webpack cli 사용시, cli 로 전달한 인자에 접근하는것.
- webpack cli 에서 제공하는 옵션을 사용하자.ex: env
- 결정되지 않은 값을 export 하는것
- 웹팩을 여러번 호출해도 동일한 출력이 생성되어야한다.
- 설정 파일을 너무 길게 작성하는 것
- 설정파일을 분할하는 것이 좋다.
webpack 은 js 로 작성하기 때문에 여러가지 스타일로 형식화할 수 있다.
Introductory configuration
webpack.config.js
const path = require('path');
module.exports = {
mode: 'development',
entry: './foo.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'foo.bundle.js'
}
}
multiple targets
하나의 객체, 함수, 프로미스를 내보내는 방식과 함께 여러개의 설정을 export 할 수도 있다.
webpack 번들링 시 설정 개수만큼 빌드가 실행된다.
amd 와 cjs 를 동시지원하는 라이브러리 빌드시 유용하다.
module.exports = [
{
output: {
filename: './dist-amd.js',
libraryTarget: 'amd',
},
name: 'amd',
entry: './app.js',
mode: 'production'
},
{
output: {
filename: './dist-commonjs.js',
libraryTarget: 'commonjs'
},
name: 'commonjs',
entry: './app.js',
mode: 'production'
}
]
webpack cli 에서 --config-name
에 name 에 해당하는 값을 전달하면, 해당 설정만 사용해서 번들링을 진행한다.
dependencies
dependencies 프로퍼티를 통해 번들링 순서를 설정할 수도 있다.
webpack.config.js
module.exports = [
{
name: 'client',
target: 'web',
},
{
name: 'server',
target: 'node',
dependencies: ['client']
}
]
parallelism
여러개의 configuration 을 사용하는 경우 parallelism 프로퍼티를 통해 컴파일러 개수를 명시할 수 있다.
webpack.config.js
module.exports = [
{
},
{
}
]
module.exports.parallelism = 1;