Webpack 알아보기 01 - 기본 걔념 알아보기
Webpack 이란?
웹팩이란 자바스크립트상의 여러 종속된 모듈들을 하나의 bundle(꾸러미) 로 묶어서 하나의 파일로 배포할 수 있도록 도와주는 트렌스파일 툴 입니다. 내가 작성한 모듈 뿐만이 아니라 Npm install 을 통해 사용하고 있는 모듈들 까지도 한꺼번에 묶어주기 때문에 프론트앤드 프로그램을 개발할 때에도 좀 더 간단하게 배포할 수 있습니다.
출처 : https://webpack.js.org/
Webpack 설치
Node.js 가 설치되어 있는 상태에서 아래와 같이 webpack 을 설치합니다.
$ mkdir webpack-demo && cd webpack-demo
$ npm init -y
$ npm install webpack webpack-cli --save-dev
npm install
시에 webpack 을 global 로 설치해도 상관없지만 실무에서 사용시에는 –save-dev 로 설정해 -devDependancy 로 관리해주는 것이 좋습니다.
webpack 실행하기
먼저 webpack과 같이 트랜스파일을 하지 않는 일반적인? 웹환경을 구성한 다음, webpack 환경으로 바꾸어 보겠습니다.
webpack-demo
|- package.json
+ |- index.html
+ |- /src
+ |- index.js
src/index.js
위와 같은 폴더 구성으로 index.html
파일과 /src/index.js
파일을 추가합니다.
/src/index.js
function component() {
let element = document.createElement('div');
// Lodash, currently included via a script, is required for this line to work
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
return element;
}
document.body.appendChild(component());
index.html
<!doctype html>
<html>
<head>
<title>Getting Started</title>
<script src="https://unpkg.com/lodash@4.16.6"></script>
</head>
<body>
<script src="./src/index.js"></script>
</body>
</html>
위의 예제를 보게 되면 index.js 파일은 lodash 를 암묵적으로 의존하고 있다는 것을 할 수 있습니다. index.js 파일에서 _
로 표현된 객체가 lodash 입니다. 여기에서 몇가지 문제들이 발생할 수 있습니다.
- index.js 가 사용하고 있는
_
객체가 어떤 라이브러리 인지 알아보기가 힘들다. - index.html 에서 스크립트 순서가 뒤바뀌거나, 스트립트가 삭제될 경우 제대로 동작하지 않을 수 있다.
_
의 경우 global 에 종속되기 때문에 오염될 위험이 있다.
자 그럼 위와 같은 문제를 webpack을 통해 해결해 보겠습니다.
먼저 아래와 같이 lodash 를 설치합니다.
$ npm install --save lodash
설치 후 index.html
를 아래와 같이 변경합니다.
<!doctype html>
<html>
<head>
<title>Getting Started</title>
<!-- - <script src="https://unpkg.com/lodash@4.16.6"></script> -->
</head>
<body>
<!-- - <script src="./src/index.js"></script> -->
<script src="main.js"></script>
</body>
</html>
/src/index.js 에 lodash 모듈을 import 합니다.
import _ from 'lodash';
function component() {
let element = document.createElement('div');
element.innerHTML = _.join(['Hello', 'webpack'], ' ');
return element;
}
document.body.appendChild(component());
웹팩을 이용해 빌드하게 되면 기본적으로 소스파일과 별도로 빌드된 파일이 생성됩니다. 소스파일은 /src 폴더에, 빌드된 파일들은 /dist 폴더에서 관리되는 것이 일반적입니다. 위에서 수정한 index.html 파일을 /dist/index.html 로 이동해 주겠습니다.
마지막으로 webpack 을 이용해 빌드해 보겠습니다.
$ npx webpack
/dist 폴더를 확인해보면 main.js 란 이름으로 파일이 빌드된 것은 확인할 수 있습니다.
마지막으로 index.html 파일을 실행해 hello webpack
이 정상적으로 출력되는 것을 확인합니다.
자, 위의 빌드결과로 위의 문제점 들을 개선할 수 있었습니다.
- index.js 에 필요한 모듈을 명시적으로 표기함으로서 가독성이 올라감.
- global 이 오염되는 것을 방지.
- index.html 에 스크립트 태그가 변경되더라도 의존관계를 걱정할 필요가 없어짐.