forked from sombochea/verdaccio-ui
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
const path = require("path");
|
|
const webpack = require("webpack");
|
|
const HTMLWebpackPlugin = require("html-webpack-plugin");
|
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
const UglifyJsWebpackPlugin = require("uglifyjs-webpack-plugin");
|
|
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
|
|
const baseConfig = require("./webpack.config");
|
|
const merge = require("webpack-merge");
|
|
const _ = require("lodash");
|
|
const SRC_ROOT = path.resolve(__dirname, "../src/");
|
|
|
|
const prodConf = {
|
|
mode: "production",
|
|
|
|
entry: {
|
|
main: ["@babel/polyfill", "whatwg-fetch", `${SRC_ROOT}/index.js`]
|
|
},
|
|
|
|
module: {
|
|
rules: []
|
|
},
|
|
|
|
plugins: [
|
|
new MiniCssExtractPlugin({
|
|
filename: "style.[contenthash].css"
|
|
}),
|
|
new HTMLWebpackPlugin({
|
|
title: "ToReplaceByTitle",
|
|
scope: "ToReplaceByScope",
|
|
filename: "index.html",
|
|
favicon: `${SRC_ROOT}/template/favicon.ico`,
|
|
verdaccioURL: "ToReplaceByVerdaccio",
|
|
template: `${SRC_ROOT}/template/index.html`,
|
|
debug: false,
|
|
inject: true
|
|
})
|
|
],
|
|
|
|
optimization: {
|
|
minimizer: [
|
|
new UglifyJsWebpackPlugin({
|
|
sourceMap: true
|
|
}),
|
|
new OptimizeCSSAssetsPlugin({})
|
|
]
|
|
}
|
|
};
|
|
|
|
prodConf.module.rules = baseConfig.module.rules
|
|
.filter(
|
|
loader =>
|
|
Array.isArray(loader.use) &&
|
|
loader.use.find(v => /css/.test(v.loader.split("-")[0]))
|
|
)
|
|
.forEach(loader => {
|
|
loader.use = [MiniCssExtractPlugin.loader].concat(_.tail(loader.use));
|
|
});
|
|
|
|
module.exports = merge(baseConfig, prodConf);
|