/* * @Company: hugeInfo * @Author: ldh * @Date: 2022-02-18 14:58:23 * @LastEditTime: 2024-12-20 10:49:29 * @LastEditors: lwh * @Version: 1.0.0 * @Description: less配置 */ const CracoLessPlugin = require('craco-less'); const path = require('path'); module.exports = { optimization: { // 配置代码分割(splitChunks)策略,以优化打包后的文件大小和加载性能 splitChunks: { chunks: 'all', // 对所有类型的块进行分割 minSize: 20000, // 最小的块大小为 20KB maxSize: 0, // 不设置最大块大小,让 Webpack 自动决定 minChunks: 1, // 至少有 1 个模块共享时才进行分割 maxAsyncRequests: 30, // 异步加载时的最大请求数量 maxInitialRequests: 3, // 初始加载时的最大请求数量 automaticNameDelimiter: '~', // 使用波浪线 (~) 作为分隔符 enforceSizeThreshold: 50000, // 强制分割的阈值 cacheGroups: { vendors: { test: /[\\/]node_modules[\\/]/, // 匹配 node_modules 中的模块 priority: -10, // 优先级较低 reuseExistingChunk: true, // 如果已存在的 chunk 可以满足条件,则重用它 }, defaultVendors: { test: /[\\/]node_modules[\\/]/, // 匹配 node_modules 中的模块 priority: -20, // 更低的优先级 reuseExistingChunk: true, // 如果已存在的 chunk 可以满足条件,则重用它 filename: 'vendors.[contenthash:8].js', // 生成的文件名 }, default: { minChunks: 2, // 至少有 2 个模块共享时才进行分割 priority: -20, // 较低的优先级 reuseExistingChunk: true, // 如果已存在的 chunk 可以满足条件,则重用它 filename: 'common.[contenthash:8].js', // 生成的文件名 }, }, }, }, plugins: [ { plugin: CracoLessPlugin, options: { lessLoaderOptions: { lessOptions: { javascriptEnabled: true, }, }, }, }, ], webpack: { alias: { '@': path.resolve(__dirname, 'src'), }, }, };