62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
const path = require('path');
|
|
const { merge } = require('webpack-merge');
|
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
|
const TerserJSPlugin = require('terser-webpack-plugin');
|
|
const { setupWebpackDotenvFilesForEnv, setupDotenvFilesForEnv } = require('./dotenv');
|
|
|
|
setupDotenvFilesForEnv({ env: 'production' });
|
|
const webpackCommon = require('./webpack.common.js');
|
|
|
|
const RELATIVE_DIRNAME = process.env._RELATIVE_DIRNAME;
|
|
const IS_PROJECT_ROOT_DIR = process.env._IS_PROJECT_ROOT_DIR;
|
|
const SRC_DIR = process.env._SRC_DIR;
|
|
const COMMON_DIR = process.env._COMMON_DIR;
|
|
const DIST_DIR = process.env._DIST_DIR;
|
|
const OUTPUT_ONLY = process.env._OUTPUT_ONLY;
|
|
|
|
if (OUTPUT_ONLY !== 'true') {
|
|
console.info(`Cleaning OUTPUT DIR...\n ${DIST_DIR}\n`);
|
|
}
|
|
|
|
module.exports = merge(
|
|
{
|
|
plugins: [
|
|
...setupWebpackDotenvFilesForEnv({
|
|
directory: RELATIVE_DIRNAME,
|
|
env: 'production',
|
|
isRoot: IS_PROJECT_ROOT_DIR,
|
|
}),
|
|
],
|
|
},
|
|
webpackCommon('production'),
|
|
{
|
|
mode: 'production',
|
|
devtool: 'source-map',
|
|
optimization: {
|
|
minimize: true,
|
|
minimizer: [new TerserJSPlugin(), new CssMinimizerPlugin()],
|
|
},
|
|
plugins: [
|
|
new MiniCssExtractPlugin({
|
|
filename: '[name].css',
|
|
chunkFilename: '[name].bundle.css',
|
|
ignoreOrder: true,
|
|
}),
|
|
],
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.css$/,
|
|
include: [
|
|
SRC_DIR,
|
|
COMMON_DIR,
|
|
path.resolve(RELATIVE_DIRNAME, 'node_modules/@patternfly'),
|
|
],
|
|
use: [MiniCssExtractPlugin.loader, 'css-loader'],
|
|
},
|
|
],
|
|
},
|
|
},
|
|
);
|