1 분 소요

✔️ Webpack(웹팩) 이란?

웹팩 은 오픈 소스 자바스크립트 모듈 번들러로 요즘 프론트엔드 개발에 필수라고 할 수 있는 요소 중 하나인데요. 여러개로 나눠져 있는 파일들을 하나의 js코드로 압축하고 최적화 하는 라이브러리입니다.

✔️ Webpack(웹팩) 구성요소

웹팩은 Entry, Output, Loaders, Plugins, Mode로 구성되어 있습니다.

Entry

  • 웹팩이 빌드할 파일의 시작 위치를 나타냅니다.
  • entry 지점으로부터 import되어 있는 다른 모듈과 라이브러리의 연관성을 찾습니다.
  • entry의 디폴트로 설정된 값은 ./src/index.js 입니다.
1
2
3
module.exports = {
  entry: ' ./src/index.js'
};

Output

  • 웹팩에 의해 생성되는 번들을 내보낼 위치와 파일의 이름을 정합니다.
  • output의 기본값은 ./dist/main.js 입니다.
1
2
3
4
5
6
7
8
9
const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'main.js'
  }
};

Loaders

  • loaders를 통해 자바스크립트 파일이 아닌 파일들도 유효한 모듈로 변환해줍니다.
  • loaders의 설정은 싱글 모듈에 대한 rules 프로퍼티를 정의해야 하며, rules 프로퍼티는 test와 use를 필수 프로퍼티로 가집니다.
  • test 프로퍼티는 변환해야하는 파일들을 식별하는 역할을 합니다.
  • use 프로퍼티는 변환되어야 하는 파일에 대하여 어떤 로더를 사용해야하는지 설정합니다.
1
2
3
4
5
6
7
8
9
10
11
12
const path = require('path');

module.exports = {
  output: {
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  }
};

Plugins

  • 로더가 파일단위로 처리하는 반면 플러그인은 번들된 결과물을 처리합니다.
  • 번들된 자바스크립트를 난독화 한다거나 특정 텍스트를 추출하는 용도로 사용할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); //to access built-in plugins

module.exports = {
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

Mode

  • mode는 웹팩을 세팅함에 있어서 development, production, none 중 하나를 파라미터로 사용합니다.
  • production 은 최적화되어 빌드됩니다.
  • development 는 빠르게 빌드됩니다.
  • none 은 아무 기능 없이 웹팩으로 빌드됩니다.
1
2
3
module.exports = {
  mode: 'production'
};

✔️ Webpack 설치 방법

1
2
3
npm init
npm install -D webpack webpack-cli
npx webpack-cli .src/index.js

웹팩 설치 방법은 매우 간단합니다. 번들링을 할 디렉토리에 들어가서 위 명렁어를 차례로 입력해주면 됩니다.

1
npx create-react-app [파일명]

웹팩으로 빌드를 하고 싶은 경우는 위 명령어를 입력해주면 됩니다.

✔️ 참고 사이트

https://medium.com/@woody_dev/js-webpack-1-%EC%9B%B9%ED%8C%A9%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-f29ebca31da4

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기