webpack


설치

npm install webpack webpack-cli --save-dev
  • 실행 명령어 등록

환경설정

// file - webpack.config.js
const path = require("path");
const webpack = require("webpack");

module.exports = (env, options) => {
  const config = {
    entry: { app: ["./src/index.js"] },
    output: {
      filename: "[name].bundle.js",
      path: path.resolve(__dirname, "dist"),
    },
  };

  return config;
};

명령어

// file - package.json
"scripts": {
    "build": "webpack --config webpack.config.js"
}

babel 연동

설치

npm install --save-dev babel-loader

설정

  • babel-loader의 option의 presets /plugins 설정시 babel 설정파일(ex:.babelrc.json)이 적용된 해당 내용이 무시됨

  • webpack 설정파일에서 babel도 함께 설정을 하고 싶으면 아래 url 참고

// file - webpack.config.js
const path = require("path");
const webpack = require("webpack");

module.exports = (env, options) => {
  const config = {
      ...
    module: {
      rules: [
        {
          test: /\.m?js$/,
          exclude: /(node_modules|bower_components)/,
          include: path.resolve(__dirname, "src"),
          use: {
            loader: "babel-loader",
            // options: {
            //   presets: ["@babel/preset-env"],
            //   plugins: ["@babel/plugin-transform-runtime"],
            // },
          },
        },
      ],
    },
  };
  return config;
};

loading css

설치

npm install --save-dev style-loader css-loader

설정

// file - webpack.config.js
const path = require("path");
const webpack = require("webpack");

module.exports = (env, options) => {
  const config = {
    ...
    module: {
      rules: [
        ...
        {
          test: /\.css$/,
          use: ["style-loader", "css-loader"],
        },
      ],
    },
  };
  return config;
};

플러그인 - CleanWebpackPlugin

  • 빌드 폴더를 먼저 삭제 후 빌드 - 빌드 폴더 정리

설치

npm install --save-dev clean-webpack-plugin

설정

// file - webpack.config.js
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

module.exports = (env, options) => {
    const config = {
        ...
        plugins: [new CleanWebpackPlugin()],
    }
}

플러그인 - HtmlWebpackPlugin

  • build 결과 js 파일을 지정된 html 파일에 자동 추가해줌

설치

npm install --save-dev html-webpack-plugin

설정

// file - webpack.config.js
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = (env, options) => {
    const config = {
        ...
        plugins: [
            ...
            new HtmlWebpackPlugin({
            template: path.join(__dirname, "/public/index.html"),
            showErrors: true,
            }),
        ],
    }
}

webpack-dev-server

  • 코드를 변경할때마다 자동으로 빌드되면서 브라우저에서 바로 확인 가능

설치

npm install --save-dev webpack-dev-server

설정

// file - package.json
"scripts": {
    "dev": "webpack-dev-server --open ",
}
// file - webpack.config.js
module.exports = (env, options) => {
    const config = {
        ...
        devServer: {
        contentBase: "./dis",
        },
    }
}

정리

설치

npm install webpack webpack-cli --save-dev
npm install --save-dev babel-loader
npm install --save-dev clean-webpack-plugin
npm install --save-dev html-webpack-plugin
npm install --save-dev webpack-dev-server

설정

// file - package.json
  "scripts": {
    "dev": "webpack-dev-server --open",
    "build": "webpack --config webpack.config.js --mode production",
  },
// file - webpack.config.js
const path = require("path");
const webpack = require("webpack");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = (env, options) => {
  const config = {
    entry: { app: ["./src/index.js"] },
    output: {
      filename: "[name].bundle.js",
      path: path.resolve(__dirname, "dist"),
    },
    devServer: {
      contentBase: "./dist",
    },
    module: {
      rules: [
        {
          test: /\.m?js$/,
          exclude: /(node_modules|bower_components)/,
          include: path.resolve(__dirname, "src"),
          use: {
            loader: "babel-loader",
          },
        },
      ],
    },

    plugins: [
      new CleanWebpackPlugin(),
      new HtmlWebpackPlugin({
        template: path.join(__dirname, "/public/index.html"),
        showErrors: true,
      }),
    ],
  };

  return config;
};

[참고]

'JS' 카테고리의 다른 글

[Vue] MSW (Mock Service Worker) 연동  (0) 2023.08.27
babel setting  (0) 2020.07.14
Sinon.JS  (0) 2019.08.26
Mocha-Sinon 개발 환경  (0) 2019.08.20
[Vuejs] mocha+chai+sinon 테스트  (0) 2019.08.13

+ Recent posts