Mark van Renswoude
4db1b2f23d
Fixed production check in webpack config, removed moment locales and reduced lodash and fontawesome inclusion
122 lines
2.5 KiB
JavaScript
122 lines
2.5 KiB
JavaScript
const path = require('path');
|
|
const webpack = require('webpack');
|
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
|
|
|
|
module.exports = (env, options) => {
|
|
|
|
let config = {
|
|
mode: options.mode,
|
|
entry: './public/src/app.js',
|
|
|
|
output: {
|
|
path: path.resolve(__dirname, './public/dist'),
|
|
publicPath: '/',
|
|
filename: 'build.js'
|
|
},
|
|
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.css$/,
|
|
use: [
|
|
'vue-style-loader',
|
|
'css-loader'
|
|
],
|
|
},
|
|
{
|
|
test: /\.scss$/,
|
|
use: [
|
|
'vue-style-loader',
|
|
'css-loader',
|
|
'sass-loader'
|
|
],
|
|
},
|
|
{
|
|
test: /\.vue$/,
|
|
loader: 'vue-loader',
|
|
options: {
|
|
loaders: {
|
|
'scss': [
|
|
'vue-style-loader',
|
|
'css-loader',
|
|
'sass-loader'
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
test: /\.js$/,
|
|
loader: 'babel-loader',
|
|
exclude: /node_modules/
|
|
},
|
|
{
|
|
test: /\.(png|jpg|gif|svg)$/,
|
|
loader: 'file-loader',
|
|
options: {
|
|
name: '[name].[ext]?[hash]'
|
|
}
|
|
}
|
|
]
|
|
},
|
|
|
|
plugins: [
|
|
new HtmlWebpackPlugin({
|
|
template: path.resolve(__dirname, './public/src/index.html')
|
|
})
|
|
],
|
|
|
|
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 (options.mode === 'production')
|
|
{
|
|
config.devtool = '#source-map'
|
|
config.plugins = (config.plugins || []).concat([
|
|
new webpack.DefinePlugin({
|
|
'process.env': {
|
|
NODE_ENV: '"production"'
|
|
}
|
|
}),
|
|
new webpack.LoaderOptionsPlugin({
|
|
minimize: true
|
|
}),
|
|
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
|
|
|
|
// To see what's using the space in the bundle, uncomment this
|
|
//new BundleAnalyzerPlugin()
|
|
]);
|
|
}
|
|
else
|
|
{
|
|
config.entry = [
|
|
config.entry,
|
|
'webpack-hot-middleware/client'
|
|
];
|
|
|
|
config.plugins = (config.plugins || []).concat([
|
|
new webpack.HotModuleReplacementPlugin(),
|
|
new webpack.NoEmitOnErrorsPlugin()
|
|
]);
|
|
}
|
|
|
|
return config;
|
|
}; |