Contents

What is webpack?

What is webpack?

오늘나 자바스크립트 개발에서 모듈을 사용하여 개발하는 것은 선택이 아닌 필수입니다. 하지만 아직 모든 브라우저(마이크로소프트 - 앳지, 네이버 - 웨일, 구글 - 크롬 등등)가 *ES2015 모듈을 지원하지 않기 때문에 모듈 단위로 패키지를 관리할 수 없습니다. 이런 경우 전역 스코프를 공유하기 때문에 변수명이 충돌하거나 값이 덮어씌워지는 등 문제가 발생할 수 있습니다.

이런 문제를 해결하기 위해 *번들러를 사용하는데 wabpack은 가장 많이 사용되는 번들러 중 하나입니다.

*번들러
애플리케이션에 필요한 모든 종류의 파일들을 모듈 단위로 나누어 최소한의 파일 묶음(번들)으로 만들어 낸다. 또한 자바스크립트 파일을 외부에서 알아 보기 힘들게 코드를 변환하는 작업(Uglyfy)을 한다거나, 최신 문법의 자바스크립트를 모든 웹 브라우저에서 작동할 수 있게 ES5문법으로 변환(Transpile)하는 등 다양한 기능을 지원.

webpack의 옵션

webpack에는 많은 옵션들이 존재하는데 그 중 일부의 설명과 예시를 정리합니다.

webpack은 모든 것을 모듈로 다룹니다. 제 경험상 모듈은 보통 하나만 사용해선 개발이 진행되지 않고, 여러개를 동시에 사용하게 됩니다.

그리고 모듈 간의 의존성에는 시작점이 존재하게 되는데 이를 entry로 설정합니다.

1. entry

1
2
3
module.exports = {
    entry: "./src/js/main.js"
}

위의 예제 코드의 경우에, src/js 경로에 있는 main.js가 시작점(진입점)이 됩니다. 시작점이 여러개인 경우에는 옵션을 객체나 리스트로 작성할 수 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
module.exports = {
    entry: {
        main: "./src/js/main.js",
        acticles: "./src/js/acticles.js",
    }
}

// or

module.exports = {
    entry: ["./src/js/main.js", "./src/js/acticles.js"]
}

2. Loader

webpack은 기본적으로 javaScript와 JSON 파일만을 이해합니다. 이외에 다양한 파일들을 이해하려면 Loader를 사용하면 됩니다. loader는 번들링 과정에서 이미지나 CSS파일과 같은 자원들을 javaScript로 변환 해줍니다.

3. Plugin

Loader가 특정 파일을 javaScript로 변환해준다면, Plugin은 조금 더 광범위한 역할을 수행합니다. Plugin은 번들 파일이 생성되는 방식을 수정할 수도 있으며, 환경 변수 주입, 난도화 및 압축과 같은 작업을 수행합니다.

*해당 포스팅은 기초부터 완성까지, 프런트엔드의 내용을 공부하며 기록해 놓은 것입니다.

👀요약

이외에서 많은 webpack이 있으나 그것을 전부 알 필요는 없다고 생각합니다. 실제 개발을 하다보면 cmd에서 error : 너 이webpack 없어서 에러났어. 이거 설치하려면 “command command” 입력해 라고 친절히 알려줍니다. 다만 webpack이 무엇인지? 번들이란 무엇인지? 궁금했기에 내용을 정리해봤습니다.