// ------------------
|
|
// @Table of Contents
|
|
// ------------------
|
|
|
|
/**
|
|
* + @Loading Dependencies
|
|
* + @Common Plugins
|
|
* + @Merging Production Plugins
|
|
* + @Merging Development Plugins
|
|
* + @Exporting Module
|
|
*/
|
|
|
|
|
|
// ---------------------
|
|
// @Loading Dependencies
|
|
// ---------------------
|
|
|
|
const
|
|
manifest = require('../manifest'),
|
|
webpack = require('webpack');
|
|
|
|
|
|
// ---------------
|
|
// @Common Plugins
|
|
// ---------------
|
|
|
|
const
|
|
plugins = [];
|
|
|
|
plugins.push(
|
|
new webpack.DefinePlugin({
|
|
'process.env': {
|
|
NODE_ENV: JSON.stringify(manifest.NODE_ENV),
|
|
},
|
|
}),
|
|
|
|
new webpack.optimize.CommonsChunkPlugin({
|
|
name: 'vendor',
|
|
filename: manifest.outputFiles.vendor,
|
|
minChunks(module) {
|
|
const { context } = module;
|
|
return context && context.indexOf('node_modules') >= 0;
|
|
},
|
|
}),
|
|
|
|
new webpack.ProvidePlugin({
|
|
$: 'jquery',
|
|
jQuery: 'jquery',
|
|
'window.jQuery': 'jquery',
|
|
Popper: ['@popperjs/core', 'default'],
|
|
})
|
|
);
|
|
|
|
|
|
// ---------------------------
|
|
// @Merging Production Plugins
|
|
// ---------------------------
|
|
|
|
if (manifest.IS_PRODUCTION) {
|
|
plugins.push(
|
|
new webpack.optimize.UglifyJsPlugin({
|
|
compress: {
|
|
comparisons : true,
|
|
conditionals : true,
|
|
dead_code : true,
|
|
drop_debugger : true,
|
|
evaluate : true,
|
|
if_return : true,
|
|
join_vars : true,
|
|
screw_ie8 : true,
|
|
sequences : true,
|
|
unused : true,
|
|
warnings : false,
|
|
},
|
|
|
|
output: {
|
|
comments: false,
|
|
},
|
|
})
|
|
);
|
|
}
|
|
|
|
|
|
// ----------------------------
|
|
// @Merging Development Plugins
|
|
// ----------------------------
|
|
|
|
if (manifest.IS_DEVELOPMENT) {
|
|
plugins.push(
|
|
new webpack.NoEmitOnErrorsPlugin(),
|
|
new webpack.NamedModulesPlugin(),
|
|
new webpack.HotModuleReplacementPlugin()
|
|
);
|
|
}
|
|
|
|
|
|
// -----------------
|
|
// @Exporting Module
|
|
// -----------------
|
|
|
|
module.exports = plugins;
|