
Vue、Webpack4和mini-css-extract-plugin按需加载模式下空CSS文件的解决方案
使用Vue、Webpack4和mini-css-extract-plugin结合按需加载时,常常会遇到打包出空CSS文件的问题,导致项目体积增大且无实际作用。 本文提供一种有效的解决方案。
核心在于修改mini-css-extract-plugin的源码,过滤掉空CSS模块。具体修改如下:
// chunk.modulesIterable 为 [chunk.modules] 的可迭代方式 const renderedModules = Array.from(chunk.modulesIterable).filter(module => module.type === MODULE_TYPE && module.content);
通过这段代码,我们过滤掉module.content为空的模块,从而避免打包空CSS文件。
立即学习“前端免费学习笔记(深入)”;
问题分析:
- vue-loader: vue-loader无法完全去除注释和无效代码,这些内容仍可能被包含在CSS文件中。
- sass-loader和css-loader: 这两个loader输出的是有效代码,不会产生空内容。
- vue-style-loader: 在按需加载模式下,vue-style-loader不会被调用。
- mini-css-extract-plugin: 通过修改其源码,利用chunk过滤逻辑,有效剔除空内容模块。
通过以上修改,可以有效解决按需加载模式下mini-css-extract-plugin产生的空CSS文件问题,优化项目打包结果。










