@luban-cli/cli-plugin-service
Version:
A development runtime environment dependency
71 lines • 3 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const terser_webpack_plugin_1 = __importDefault(require("terser-webpack-plugin"));
const optimize_css_assets_webpack_plugin_1 = __importDefault(require("optimize-css-assets-webpack-plugin"));
const cssnano_1 = __importDefault(require("cssnano"));
const terserOptions_1 = require("./../utils/terserOptions");
class Optimization {
apply(args) {
const { api, projectConfig } = args;
const isProduction = process.env.NODE_ENV === "production";
api.chainWebpack("client", (webpackConfig) => {
if (isProduction) {
webpackConfig.optimization
.splitChunks({
cacheGroups: {
common: {
chunks: "initial",
name: "common",
priority: -20,
minChunks: 2,
maxInitialRequests: 5,
minSize: 0,
},
vendors: {
test: /[\\/]node_modules[\\/]/,
chunks: "initial",
name: "vendors",
priority: -10,
enforce: true,
},
styles: {
name: "styles",
test: /\.css$/,
chunks: "all",
enforce: true,
},
},
})
.runtimeChunk("single")
.minimizer("terser")
.use(terser_webpack_plugin_1.default, [terserOptions_1.terserOptions(projectConfig.productionSourceMap)])
.end()
.minimizer("optimizeCss")
.use(optimize_css_assets_webpack_plugin_1.default, [
{
cssProcessor: cssnano_1.default,
cssProcessorPluginOptions: {
preset: [
"default",
{
discardComments: { removeAll: false },
discardEmpty: { removeAll: true },
discardUnused: { removeAll: true },
},
],
},
},
])
.end();
}
});
api.chainWebpack("server", (webpackConfig) => {
webpackConfig.optimization.splitChunks({}).end();
});
}
}
exports.default = Optimization;
//# sourceMappingURL=optimization.js.map