본문 바로가기
Dev/Webpack

[Webpack] 설정파일 살펴보기

by dev_jsk 2020. 9. 17.
728x90
반응형

webpack.config.js

var path = require("path");
var webpack = require("webpack");

module.exports = {
  mode: "production",
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "./dist"),
    publicPath: "/dist/",
    filename: "build.js",
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ["vue-style-loader", "css-loader"],
      },
      {
        test: /\.vue$/,
        loader: "vue-loader",
        options: {
          loaders: {},
          // other vue-loader options go here
        },
      },
      {
        test: /\.js$/,
        loader: "babel-loader",
        exclude: /node_modules/,
      },
      {
        test: /\.(png|jpg|gif|svg)$/,
        loader: "file-loader",
        options: {
          name: "[name].[ext]?[hash]",
        },
      },
    ],
  },
  resolve: {
    alias: {
      vue$: "vue/dist/vue.esm.js",
    },
    extensions: ["*", ".js", ".vue", ".json"],
  },
  devServer: {
    historyApiFallback: true,
    noInfo: true,
    overlay: true,
  },
  performance: {
    hints: false,
  },
  devtool: "#eval-source-map",
};

if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'
  // http://vue-loader.vuejs.org/en/workflow/production.html
  module.exports.plugins = (module.exports.plugins || []).concat([
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: '"production"'
      }
    }),
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: false
      }
    }),
    new webpack.LoaderOptionsPlugin({
      minimize: true
    })
  ])
}

Line 설명

1 - 2 : 라이브러리 사용

5 : Webpack 3버전에서는 사용하지 않음

6 : Webpack으로 변환할 대상 파일, 진입점

7 : 대상 파일을 변환해서 결과물이 나올 파일의 이름, 경로 등

9 : CDN 배포 시 주소에 포함될 수 있게끔 속성을 정의하는 것

12 : Loader의 속성을 정의

15 : CSS 파일에 대해 CSS 로더를 이용해 변환을 시킨 후 작업

19 : VUE 파일에 대해 VUE 로더를 사용

27 : JS 파일에 대해 BABEL 로더(자바스크립트 최신 문법을 여러 브라우저가 호환 가능하도록 변환)를 돌려 변환

29 : 프로젝트 내 제외할 경로 지정

32 : 이미지 파일에 대해 FILE 로더를 이용하여 이미지들을 Webpack에서 인식할 수 있게 한다.

40 : Webpack으로 파일의 연관관계를 해석할 때 파일의 해석방식 정의

41 : 별칭 지정

44 : import 시 파일 확장자 생략 가능하도록 미리 지정

46 : Webpack Dev Server 설정

51 : 성능 관련된 힌트를 주는 속성. 결과물의 사이즈(Webpack에서 제한한 크기) 가 초과가 되면 경고를 주는 속성

54 : 개발을 용이하게 하기 위한 소스맵 제공

57 - 76 : Webpack 4버전에서 mode: 'production' 와 동일

728x90
반응형

'Dev > Webpack' 카테고리의 다른 글

[Webpack] Dev Server  (0) 2020.09.16
[Webpack] ES6 Modules  (0) 2020.09.16
[Webpack] Webpack  (0) 2020.09.15
[Webpack] NPM  (0) 2020.09.14

댓글