UNPKG

@luban-cli/cli-plugin-service

Version:
71 lines 3 kB
"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