// ------------------
|
|
// @Table of Contents
|
|
// ------------------
|
|
|
|
/**
|
|
* + @Loading Dependencies
|
|
* + @Entry Point Setup
|
|
* + @Path Resolving
|
|
* + @Exporting Module
|
|
*/
|
|
|
|
|
|
// ---------------------
|
|
// @Loading Dependencies
|
|
// ---------------------
|
|
|
|
const
|
|
path = require('path'),
|
|
manifest = require('./manifest'),
|
|
devServer = require('./devServer'),
|
|
rules = require('./rules'),
|
|
plugins = require('./plugins');
|
|
|
|
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
|
|
const TerserPlugin = require("terser-webpack-plugin");
|
|
|
|
// ------------------
|
|
// @Entry Point Setup
|
|
// ------------------
|
|
|
|
const
|
|
entry = [
|
|
path.join(manifest.paths.src, 'assets', 'scripts', manifest.entries.js),
|
|
];
|
|
|
|
|
|
// ---------------
|
|
// @Path Resolving
|
|
// ---------------
|
|
|
|
const resolve = {
|
|
extensions: ['.tsx', '.ts', '.webpack-loader.js', '.web-loader.js', '.loader.js', '.js', '.jsx'],
|
|
modules: [
|
|
path.join(__dirname, '../node_modules'),
|
|
path.join(manifest.paths.src, ''),
|
|
],
|
|
alias: {
|
|
'@': path.join(manifest.paths.src),
|
|
'@/components': path.join(manifest.paths.src, 'assets', 'scripts', 'components'),
|
|
'@/utils': path.join(manifest.paths.src, 'assets', 'scripts', 'utils'),
|
|
'@/constants': path.join(manifest.paths.src, 'assets', 'scripts', 'constants'),
|
|
},
|
|
};
|
|
|
|
const optimization = {
|
|
minimize: manifest.MINIFY
|
|
};
|
|
|
|
if (manifest.MINIFY) {
|
|
optimization.minimizer = [
|
|
new CssMinimizerPlugin(),
|
|
new TerserPlugin()
|
|
];
|
|
}
|
|
|
|
// -----------------
|
|
// @Exporting Module
|
|
// -----------------
|
|
module.exports = {
|
|
devtool: manifest.IS_PRODUCTION ? false : 'source-map',
|
|
context: path.join(manifest.paths.src, manifest.entries.js),
|
|
// watch: !manifest.IS_PRODUCTION,
|
|
entry,
|
|
mode: manifest.NODE_ENV,
|
|
// output: {
|
|
// path: manifest.paths.build,
|
|
// publicPath: '',
|
|
// filename: manifest.outputFiles.bundle,
|
|
// },
|
|
module: {
|
|
rules,
|
|
},
|
|
optimization: optimization,
|
|
resolve,
|
|
plugins,
|
|
devServer,
|
|
// Suppress Bootstrap SASS deprecation warnings (modern syntax)
|
|
ignoreWarnings: [
|
|
/Deprecation Warning/,
|
|
/node_modules\/bootstrap/,
|
|
/repetitive deprecation warnings omitted/,
|
|
/red\(\) is deprecated/,
|
|
/green\(\) is deprecated/,
|
|
/blue\(\) is deprecated/,
|
|
/Global built-in functions are deprecated/
|
|
]
|
|
};
|