Skip to main content

Webpack

Yeo Da Seul

JavaScript 애플리케이션을 위한 정적 모듈 번들러(Static Module Bundler)입니다.

Webpack은 다양한 기능을 제공합니다. 모듈 로딩, 코드 압축, 파일 병합, 코드 스플리팅(Code Splitting), 플러그인 시스템 등을 지원하여 개발자가 애플리케이션을 효율적으로 관리하고 최적화할 수 있도록 도와줍니다. 또한, 개발 환경과 프로덕션 환경 간의 설정을 구분하여 관리할 수 있는 기능도 제공합니다.

Webpack은 이러한 모듈들을 처리하여 하나의 번들 파일로 만들어줍니다. 번들 파일은 모든 의존 모듈과 애플리케이션 코드를 포함하며, 이를 통해 웹 브라우저에서 실행할 수 있게 됩니다. 또한, Webpack은 JavaScript 이외에도 CSS, 이미지 등 다양한 유형의 파일도 처리할 수 있습니다.

Webpack은 JavaScript 모듈뿐만 아니라 CSS, 이미지, 폰트 등 다양한 유형의 파일도 모듈로 취급하여 번들링할 수 있습니다. 이를 통해 애플리케이션의 의존성을 관리하고 필요한 리소스를 효율적으로 로드할 수 있습니다.

webpack을 시작하기 전에 Node.js를 설치해야 합니다.

npm init OR npm init -y
{
    "name": "game",
    "version": "1.0.0",
    "description": "game javascript",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC"
}
npm install webpack webpack-cli --save-dev
{
    "name": "game",
    "version": "1.0.0",
    "description": "game javascript",
    "main": "index.js",
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC",
    "devDependencies": {
      "webpack": "^5.83.1",
      "webpack-cli": "^5.1.1"
    }
}

npx webpack을 작성하면 파일이 번들링 됩니다.

const path = require('path');

module.exports = {
    mode: 'production',    //production, development
    entry: {
        index: './src/index.js'
    },
    output: {
        path: path.resolve(__dirname, 'public'),
        filename: 'js/[name].js'
    } 
}
npm install webpack-dev-server --save-dev
{
    "name": "game",
    "version": "1.0.0",
    "description": "game javascript",
    "main": "index.js",
    "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC",
    "devDependencies": {
      "webpack": "^5.83.1",
      "webpack-cli": "^5.1.1",
      "webpack-dev-server": "^4.15.0"
    }
}
npm install html-webpack-plugin --save-dev
{
    "name": "game",
    "version": "1.0.0",
    "description": "Game javascript",
    "main": "index.js",
    "scripts": {
      "build": "webpack",
      "start": "webpack server --open"
    },
    "author": "",
    "license": "ISC",
    "devDependencies": {
      "html-webpack-plugin": "^5.5.1",
      "webpack": "^5.83.1",
      "webpack-cli": "^5.1.1",
      "webpack-dev-server": "^4.15.0"
    }
}
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    mode: 'production',    //production, development
    entry: {
        index: './src/index.js',
    },
    output: {
        path: path.resolve(__dirname, 'public'),
        filename: 'js/[name].js',
    },
    plugins: [new HtmlWebpackPlugin({
        template: './src/index.html',   //번들 전
        filename: './index.html',        //번들 후
        hash: true,
        showErrors: true,
    })],
}
npm install --save-dev style-loader css-loader
"devDependencies": {
    "css-loader": "^6.7.4",
    "html-webpack-plugin": "^5.5.1",
    "style-loader": "^3.3.3",
    "webpack": "^5.83.1",
    "webpack-cli": "^5.1.1",
    "webpack-dev-server": "^4.15.0"
}
module: {
    rules: [
        {
            test: /\.css$/i,
            use: ["style-loader", "css-loader"],
        },
    ],
},
npm install --save-dev mini-css-extract-plugin
"devDependencies": {
    "css-loader": "^6.7.4",
    "html-webpack-plugin": "^5.5.1",
    "mini-css-extract-plugin": "^2.7.6",
    "style-loader": "^3.3.3",
    "webpack": "^5.83.1",
    "webpack-cli": "^5.1.1",
    "webpack-dev-server": "^4.15.0"
}
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module: {
    rules: [
        {
            test: /\.css$/i,
            // use: ["style-loader", "css-loader"],
            use: [MiniCssExtractPlugin.loader, "css-loader"],
            exclude: '/node_modules/'
        },
    ],
},

JavaScript 애플리케이션을 위한 정적 모듈 번들러(Static Module Bundler)입니다.

웹 개발을 위한 빠른 속도와 간편한 설정을 제공하는 도구입니다. Vue.js 팀에서 개발한 Vite은 Vue.js 애플리케이션 개발을 위한 주요 도구로 알려져 있습니다.