const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const { merge } = require('webpack-merge');

const prod = require('./webpack.prod');

const smp = new SpeedMeasurePlugin();

const config = merge(prod, {
    plugins: [
        new BundleAnalyzerPlugin({
            excludeAssets: /-json\..*\.chunk\.js$/
        })
    ]
});

const searchPlugin = (name) => config.plugins.findIndex((e) => e.constructor.name === name);

// NOTE: We need to re-add the mini css plugin to workaround this issue
// https://github.com/stephencookdev/speed-measure-webpack-plugin/issues/167
const miniCssPluginIndex = searchPlugin('MiniCssExtractPlugin');
const miniCssPlugin = config.plugins[miniCssPluginIndex];

const exportedConfig = smp.wrap(config);

exportedConfig.plugins[miniCssPluginIndex] = miniCssPlugin;

module.exports = exportedConfig;
