const webpack = require("webpack");
const merge = require("webpack-merge");
const common = require("./webpack.common.js");
const moment = require("dayjs");
const path = require("path");
const VERSION = require("./version.js");

function makeBuildStr() {
    let buildStr = moment().format("YYYYMMDD-HHmmss");
    console.log("Prompt " + VERSION + " build " + buildStr);
    return buildStr;
}

const BUILD = makeBuildStr();

let BundleAnalyzerPlugin = null;
if (process.env.WEBPACK_ANALYZE) {
    BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin;
}

let merged = merge.merge(common, {
    mode: "production",
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "[name].js",
    },
    devtool: false,
    optimization: {
        minimize: true,
    },
});

if (BundleAnalyzerPlugin != null) {
    merged.plugins.push(new BundleAnalyzerPlugin());
}
merged.plugins.push(
    new webpack.DefinePlugin({
        __PROMPT_DEV__: "false",
        __PROMPT_VERSION__: JSON.stringify(VERSION),
        __PROMPT_BUILD__: JSON.stringify(BUILD),
    })
);

module.exports = merged;