Webpack 설정
웹팩의 사용할때 기본설정을 알아보도록 하겠습니다.
기본적으로 node.js,npm,webpack,webpack-dev-server가 설치되어 있어야 합니다.
추가로 뷰cli를 통해 webpack-simple을 설치하게 되면 webpack.config.js 파일이 생성됩니다.
이 파일에서 웹팩에 대한 설정을 할 수 있습니다.
기본로딩
var path = require('path');
var webpack = require('webpack');
빌드시 사용할 경로를 지정해주는 파일로딩 라이브러리와 웹팩을 로드합니다.
entry
entry : './src/main.js',
웹팩으로 빌드할 파일을 main.js로 지정합니다.
output
output : {
path : path.resolve(__dirname,'./dist'),
publicPath : '/dist/',
filename : 'build.js'
}
빌드시 파일 경로를 지정합니다.
html 파일에서는 이 js파일을 사용합니다.
module
module: {
rules: [
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
],
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {}
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
총 4종류의 파일에 대해서 모듈을 적용하여 변환시킵니다.
첫번째로 css파일을 vue-style-loader와 css-loader를 적용합니다.
vue 파일에는 vue-loader를 적용하여 vue 파일의 template,script,style등의 내용이 자동으로 변환됩니다.
js 파일에는 babel-loader를 적용하여 es6 문법도 호환이 가능하게 해줍니다.
끝으로 이미지 파일은 file-loader를 적용하여 js파일로 변환합니다.
resolve
resolve : {
alias : {
'vue$' : 'vue/dist/vue.esm.js'
},
extensions : ['*','.js','.vue','.json']
}
뷰 라이브러리의 유형중 어떤걸 사용할지 지정합니다.
devServer
devServer : {
historyApiFallback : true,
noInfo : true,
overlay : true
}
webpack-dev-server 관련된 속성을 지정합니다.
자세한 정보는 https://github.com/webpack/webpack-dev-server 에서 확인이 가능합니다.
performance
performance : {
hints : false
}
웹팩으로 빌드한 파일의 크기가 250k를 넘으면 경고메시지를 표시할지 설정합니다.
devtool
devtool : '#eval-source-map'
웹팩으로 빌드된 파일을 구동했을 때 개발자 도 구에서 디버깅 방식을 지정합니다.
자세한 정보는 https://webpack.js.org/ 에서 확인이 그낭합니다.
배포옵션
if (process.env.NODE_ENV === 'production') {
module.exports.devtool = '#source-map'
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
})
])
}
개발자도구 분석옵션을 #source-map으로 사용하고,
자바스크립트 파일을 줄이기 위해 Uglify 플러그인 설정을 추가했습니다.
로직을 보자면 main.js 파일에 App.vue 파일과 뷰 라이브러리를 불러와서 동작시키고
App.vue 에서는 이미지 등을 호출시켜 웹페이지를 구성하는 구조입니다.
웹팩은 파일간의 관계에 따라 build.js 파일을 생성시키고 index 파일에서 호출합니다.