본문 바로가기
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

댓글