[javascript] Webpack으로 대규모 프로젝트 관리하기

이 글에서는 대규모 프로젝트를 관리하기 위해 Webpack을 사용하는 방법에 대해 알아보겠습니다. Webpack은 모듈 번들러로서, 여러 개의 자바스크립트 파일과 리소스들을 하나의 번들로 묶어줌으로써 프로젝트의 성능을 최적화하고 개발자들의 작업 효율을 높여줍니다.

Webpack 설치 및 설정

먼저, Node.js가 설치되어 있는지 확인해야 합니다. Node.js가 설치되어 있지 않다면, 공식 웹사이트에서 다운로드하여 설치할 수 있습니다.

  1. 프로젝트 폴더에서 다음 명령어를 사용하여 Webpack을 설치합니다.
npm install webpack webpack-cli --save-dev
  1. webpack.config.js 파일을 프로젝트 폴더에 생성합니다. 이 파일은 Webpack의 설정을 담당하는 파일입니다.

  2. webpack.config.js 파일에 다음과 같이 기본 설정을 추가합니다.

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
};
  1. src 폴더를 생성하고, index.js 파일을 생성하여 프로젝트의 진입점으로 설정합니다.

  2. package.json 파일에 다음 스크립트를 추가합니다.

"scripts": {
  "build": "webpack"
}

모듈 사용과 번들링

Webpack은 ES6 모듈 문법을 지원하며, 여러 모듈을 불러와 번들로 묶을 수 있습니다.

import { sum } from './math';

console.log(sum(2, 3));

위의 예제에서 math.js 파일에서 sum 함수를 불러와 사용하고 있습니다.

로더 사용하기

Webpack은 다양한 로더를 통해 다양한 유형의 파일들도 모듈로 취급할 수 있습니다. 예를 들어, CSS나 이미지 파일들을 로더를 통해 처리할 수 있습니다.

  1. CSS 로더 설치하기:
npm install style-loader css-loader --save-dev
  1. webpack.config.js 파일에 다음과 같이 로더 설정을 추가합니다.
module: {
  rules: [
    {
      test: /\.css$/,
      use: ['style-loader', 'css-loader'],
    },
  ],
}
  1. CSS 파일을 불러와 사용하면 됩니다.
import './styles.css';

플러그인 사용하기

Webpack의 플러그인은 번들된 결과물에 대한 다양한 추가 작업을 수행할 수 있게 해줍니다.

  1. HTML 플러그인 설치하기:
npm install html-webpack-plugin --save-dev
  1. webpack.config.js 파일에 HTML 플러그인 설정을 추가합니다.
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  // ...
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html',
    }),
  ],
};
  1. src 폴더에 index.html 파일을 생성하여 웹 애플리케이션의 기본 HTML 템플릿을 작성합니다.

  2. index.js 파일에서 다음과 같이 HTML을 불러와서 사용할 수 있습니다.

import htmlTemplate from './index.html';

범용적인 환경 구성

Webpack의 설정 파일은 개발 환경과 프로덕션 환경에서 서로 다른 설정을 적용할 수 있습니다.

  1. .env 파일을 프로젝트 폴더에 생성합니다.

  2. .env 파일에 다음과 같이 환경 변수를 설정합니다.

MODE=development
  1. webpack.config.js 파일을 업데이트하여 개발과 프로덕션 환경에서 다른 설정을 사용하도록 합니다.
const webpack = require('webpack');
const dotenv = require('dotenv');

module.exports = (env) => {
  const envFile = env.MODE === 'production' ? '.env.prod' : '.env.dev';
  const envVars = dotenv.config({ path: envFile }).parsed;

  return {
    // ...
    plugins: [
      new webpack.DefinePlugin({
        'process.env': JSON.stringify(envVars),
      }),
    ],
  };
};

이제 .env.dev 파일과 .env.prod 파일을 각각 개발 환경과 프로덕션 환경에 맞게 작성하면, 각각의 환경 변수를 사용할 수 있습니다.

결론

Webpack을 사용하면 대규모 프로젝트의 모듈 관리와 번들링을 쉽게 할 수 있습니다. 이 글에서는 Webpack의 설치 및 설정, 모듈 사용, 로더 사용, 플러그인 사용, 범용적인 환경 구성에 대해 알아보았습니다. Webpack을 적절히 활용하여 프로젝트의 성능과 개발 효율을 향상시킬 수 있습니다.

참고 자료