purgecss-webpack-plugin
插件的目的是删除未使用的 CSS,如果它删除了所有 CSS,那么输出文件可能变成 0KB。这通常是因为没有 CSS 规则被实际使用,或者 purgecss-webpack-plugin
配置过于严格。
要消除这些空文件,你可以在 webpack 配置中使用 MiniCssExtractPlugin
,该插件允许你控制提取的 CSS 文件的输出。你可以设置一个选项来忽略空文件。
下面是一个如何配置 MiniCssExtractPlugin
以忽略空文件的示例:
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
// ... 其他 webpack 配置
plugins: [
new MiniCssExtractPlugin({
filename: '[name].[contenthash].css',
ignoreOrder: true, // 忽略 CSS 中的顺序问题
chunkFilename: '[id].[contenthash].css',
onEmit: (assets, emission) => {
// 遍历所有 CSS 文件
Object.keys(assets).forEach(asset => {
if (asset.endsWith('.css') && assets[asset].source().length === 0) {
// 如果文件是空的,则从输出中删除它
delete assets[asset];
}
});
// 继续正常的发射过程
return emission;
},
}),
// ... 其他插件
],
// ... 其他 webpack 配置
};
在这个配置中,onEmit
钩子函数在 webpack 发射阶段被调用,它允许你修改输出文件。在这个函数中,我们检查每个 CSS 文件,如果它是空的(即文件内容为 0 字节),我们就从输出中删除它。
请注意,这种方法可能不是最佳解决方案,因为它会阻止空文件被输出。更好的方法是检查为什么 purgecss-webpack-plugin
删除了所有 CSS,并调整其配置或确保至少有一些 CSS 被实际使用。