webpack 시작하기

2020. 1. 7. 03:34webpack

처음 시작하기 앞서 아래와 같이 파일 구조를 만들어줍니다. 

index.js
const hiWebpack = () => {
  const tag = document.createElement("h1");
  tag.innerHTML = _.join(["hi", "webpack"], " ");
  return tag;
};

document.body.appendChild(hiWebpack());
index.html
<html>
  <head>
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>
  </head>
  <body>
    <script src="./app/index.js"></script>
  </body>
</html>

 

위의 코드는  lodash 라이브러리를  body 태그안에 cdn 형태로 불러온 후 index.js를 실행시켜서 body태그안에 hi webpack을 넣는 코드이다. 

 

실행을 해보면 아래와 같이 결과가 나오며 lodash.min.js 파일이 load되는 것을 볼 수 있다. http 형태로 lodash를 요청하여 사용하는 것을 알 수있다. 만약 이렇게 요청하는 것이 많아지면 성능상에 이슈가 발생할 수 있다. 

이제부터 webpack을 사용해보겠다. 

 

우선 

// yarn
yarn init
yarn add lodash

// npm
npm init
npm i lodash --save

yarn init로 package.json을 만들겠다. package.json은 프로젝트의 정보들이 들어있는 파일이다. 추가로 lodash를 설치해준다.

 

위에서 cdn으로 불러온 lodash는 주석처리를 해주고 index.js에서 bundle.js로 바꾸어준다. 

 

index.html
<html>
  <head>
    <!-- <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script> -->
  </head>
  <body>
    <script src="dist/bundle.js"></script>
  </body>
</html>

 

index.js
import _ from "lodash"; //이 줄 추가

const hiWebpack = () => {
  const tag = document.createElement("h1");
  tag.innerHTML = _.join(["hi", "webpack"], " ");
  return tag;
};

document.body.appendChild(hiWebpack());

 

이 상태에서 실행하면 아래와 같이 오류가 발생한다.

왜냐하면 번들되지 못한채 완전히 외부 라이브러리라고 인식하는 것 같다. 그래서 webpack을 통한 번들링 작업이 필요하다. 

 

아래 명령어를 통해 번들링을  할 수 있다. 

// 예전에는 webpack app/index.js dist/bundle.js
// 만으로 됐었는데 4.xx 버전으로 올라가면서 아래와 같이 적어주어야 한다고 한다. 
webpack app/index.js --output dist/bundle.js --mode development

-- mode 'production' : none | 'deveopment' | 'production'

--mode는  상황에 맞게 최적화를 선택할 수 있는 옵션이다. 

development와 production을 통해 배포와 개발 모드를 선택할 수 있다. 

 

위의 명령어를 치면 아래와 같이 진행된다. 

파일 구조는 아래와 같이변한다. 

실행 결과

이전에 cdn 방법과 다르게 bundle.js가 load된 것을 확인할 수 있다. webpack이 bundle.js로 압축하여 실행한 것을 확인할 수 있다.

 

요약하자면

이 글을 통해 처음으로 webpack을 사용했습니다. 그리고 cdn과 비교하여 파일이 bundle.js로 압축하여 사용하는 차이를 확인할 수 있었습니다. 다음 글 부터는 webpack.configure.js을 만들어서 webpack을 사용해보겠습니다. 

'webpack' 카테고리의 다른 글

webpack resolve  (0) 2020.01.11
webpack plugin  (0) 2020.01.11
webpack loader  (0) 2020.01.11
webpack entry와 ouput  (0) 2020.01.11
webpack이란?  (0) 2020.01.07