Webpack 이란?
Webpack은 자바스크립트의 모듈링을 도와주는 모듈 번들러 이다.
모듈 시스템을 구성하는 기능(CommonJS와 AMD 모듈링 방식을 모두 지원) 외에도 여러가지 리소스를 처리할 수 있는 강력한 로더 기능 사용, 기존의 다른 번들러들보다 빠른 컴파일 속도 및 유용한 플러그인 등 장점이 많다.
webpack 사용 방법
webpack은 Node.js가 설치된 환경에서 실행된다. Node.js를 사용하는 환경에서 webpack을 설치하고 모듈을 컴파일하는 방법은 다음과 같다.
설치와 컴파일
webpack은 다음과 같이 npm 명령어로 설치할 수 있다.
1 | // 터미널에서 webpack 명령어를 사용하기 위해 글로벌로 웹팩을 설치 |
webpack이 설치되면 다음 예와 같이 webpack {엔트리 파일 경로} {번들 파일 경로} 형식으로 명령어를 실행해 모듈을 컴파일한다.
1 | $ webpack ./entry.js bundle.js |
엔트리 파일은 다음 그림과 같이 서로 의존 관계에 있는 다양한 모듈을 사용하는 시작점이 되는 파일이다. 번들 파일은 브라우저에서 실행할 수 있게 모듈을 컴파일한 파일이다.
webpack에서 컴파일은 엔트리 파일을 시작으로 의존 관계에 있는 모듈을 엮어서 하나의 번들 파일을 만드는 작업이다. JavaScript를 사용하는 HTML 코드에서는 컴파일 결과로 만들어진 번들 파일만 포함하면 된다.
엔트리 파일이 여러 개일 때는 엔트리 파일마다 번들 파일이 생성된다.
설정 파일 사용
CLI(command line interface)로 webpack을 실행해 컴파일할 때 엔트리 파일이 많거나 옵션이 많으면 입력하기 불편하다. 설정 파일을 만들어 컴파일하면 이런 불편을 줄일 수 있다.
webpack 설정 파일의 기본 형태는 다음과 같다.
1 | // webpack.config.js |
위와 같은 형태로 webpack.config.js 파일을 작성해 저장한다. 설정 파일이 있는 디렉토리에서 다음과 같이 간단하게 명령어를 입력하면 컴파일을 실행한다.
1 | $ webpack |
webpack 명령어를 치면 기본적으로 webpack.config.js 파일을 찾는다. 하지만 보통 프로덕션, 테스팅, 로컬 환경에 따라 다른 파일을 쓰게 되므로 다른 설정파일을 쓰고 싶은 경우 webpack –config 설정파일경로 로 설정한다
1 | $ webpack --config {@파일명}.js // 특정한 이름의 사용자가 정의한 Webpack 설정 파일을 사용하는 경우 |
컴파일 명령어에 --watch
나 -w
옵션을 사용하면 모듈 파일이 변경될 때마다 변경된 모듈을 자동으로 다시 컴파일한다.
1 | // Webpack에서 파일의 상태가 변경되면 자동으로 빌드 |
webpack을 사용할 때는 다양한 설정을 함께 사용하는 경우가 대부분이라 설정 파일로 컴파일하는 사례가 많다. 더 다양한 설정 옵션과 자세한 설명은 webpack 문서의 Configruation에서 확인할 수 있다.