Webpack

2022. 9. 27. 13:14·개발정보
반응형

1. Webpack?

 

우선 웹팩이 무엇일까? 

위 이미지에서 보이는 것처럼 여러가지 얽힌 복잡한 파일들을 간단하게 만들어주고 있다. 

그래서 Webpack을 모듈 번들러라고 한다. 

 

즉, 여러 개로 나뉘어진 파일들을 묶어서 하나의 파일로 만들어준다. 

근데 이런 과정이 왜? 필요할까? 

 

웹 페이지는 다양한 html, js, css, png, ... 등 파일로 구성되어 있다. 

그말은 웹페이지가 구성되려면 많은 파일들을 요청해야 한다는 것이다. 

http/2 커넥션이라면 동시에 여러 파일을 요청할 수 있지만, 현재 많이 사용되고 있는 http/1.1에서는 

한번의 요청에 하나의 파일만 받을 수 있다. 

 

즉, 요청 해야하는 파일이 많아지면 그만큼 오래 기다려야해서 비효율적이다.

이러한 요청을 줄이기 위한 방법이 번들러이다. 

 

이제 모듈 번들러에서 번들러는 알게 되었다. 

다음으로 모듈은 무엇일까? 

 

자바스크립트가 계속 발전하면서 RequireJS, CommonJS, UMD 같은 JS 모듈 시스템이 만들어졌다. 

서로 다른 모듈들을 하나의 JS 파일로 합쳐주는 역할을 하는 것이 웹팩이다. 

 

2. Webpack 구동 방법

npm install --save-dev webpack webpack-cli

웹팩을 실행하는데 당연히 필요한 Webpack 패키지와 커맨드라인에서 사용하기 위해서 cli를 설치한다. 

 

const path = require("path");

module.exports = {
  mode: process.env.NODE_ENV,
  entry: "./src/javascripts/index.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "public"),
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        use: "babel-loader",
        exclude: /node_modules/,
      },
      {
        test: /\.scss$/i,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
    ],
  },
};

Webpack을 실행할 때 참조하는 설정 파일인 webpack.config.js 파일을 만들어준다. 

웹팩을 실행할 때 자동으로 해당 파일의 설정을 사용한다. 

 

mode 

mode는 3가지 설정이 있는데, development, production, none이 있다.

명칭만 봐도 딱 알겠지만 개발환경에선 development, 운영환경에서는 production을 사용한다. 

 

entry

번들링의 시작 경로를 지정하는 옵션이다. 

당연히 필요에따라 다른 경로를 설정할 수 있고, 다중 경로를 지정할 수 있다. 

 

output

번들링의 결과물이 저장되는 경로이다. 

path.resolve() 함수는 절대 경로의 주소를 받아와서 return해준다. 

 

loader 

웹팩이 웹 애플리케이션을 해석할 때 도와준다. 

따로 설정하지 않으면 css, png 등 파일을 읽을 수 없어서 필요에 맞는 패키지를 설치해서 

설정해야한다. 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발정보' 카테고리의 다른 글

OAuth  (1) 2022.10.08
babel-plugin-transform-remove-console 사용기  (1) 2022.10.04
Babel 끝장보기  (1) 2022.09.25
Git Flow  (1) 2022.09.24
메모리  (1) 2022.09.17
'개발정보' 카테고리의 다른 글
  • OAuth
  • babel-plugin-transform-remove-console 사용기
  • Babel 끝장보기
  • Git Flow
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    리액트
    CCNA
    redux
    Babel
    타입스크립트
    프로그래머스
    webpack
    자바스크립트
    react
    영어독학
    덤프
    Docker
    ReactNative
    네트워크
    네이버 부스트캠프
    리얼클래스
    영어회화
    CSS
    알고리즘
    typescript
    Node.js
    다이소
    식물
    javascript
    ChatGPT
    바질 키우기
    타일러영어
    리얼학습일기
    next.js
    바질
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
Webpack
상단으로

티스토리툴바