Webpack css加载器生成带有“";“自动”-前缀

Webpack css加载器生成带有“";“自动”-前缀,webpack,css-loader,Webpack,Css Loader,我有一个设置,我使用webpack编译一个css文件,该文件有一个指向png图像的url链接。 css文件和png都使用哈希名称写入输出文件夹。 我使用css加载器、提取加载器和文件加载器来实现这一点 整个设置在WebpackV4和css LoaderV3上运行良好。 现在我正在尝试迁移到WebpackV5和css加载程序v5。因此,生成的css中的url链接是错误的:它有一个auto-前缀,例如 生成的png:logo.9941b604ef38475a0267fbba30e5b505.png

我有一个设置,我使用webpack编译一个css文件,该文件有一个指向png图像的url链接。 css文件和png都使用哈希名称写入输出文件夹。 我使用css加载器、提取加载器和文件加载器来实现这一点

整个设置在WebpackV4和css LoaderV3上运行良好。 现在我正在尝试迁移到WebpackV5和css加载程序v5。因此,生成的css中的url链接是错误的:它有一个
auto
-前缀,例如

  • 生成的png:
    logo.9941b604ef38475a0267fbba30e5b505.png
  • css中的url:
    url(autologo.9941b604ef38475a0267fbba30e5b505.png)
这种行为是故意的还是一个bug

我使用的版本:
网页:5.38.1
css加载器:5.2.6
文件加载器:6.2.0
提取加载器:5.1.0

My webpack.config.js

const path = require('path');
const distDir = path.resolve(__dirname, 'dist');

module.exports =
{
    experiments:
    {
        asset: false
    },
    entry:
    {
        style: './src/style.js'
    },

    output:
    {
        filename: '[name].bundle.[contenthash].js',
        path: distDir,
    },

    module:
    {
        rules:
        [
            {
                resource: /\.css$/,
                use:
                [
                    {
                        loader: 'file-loader',
                        options:
                        {
                            name: '[name].[hash].css'
                        }
                    },
                    {
                        loader: 'extract-loader'
                    },
                    {
                        loader: 'css-loader'
                    }
                ],
            },

            {
                test: /\.png$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        name: '[name].[hash].[ext]'
                    }
                }
            }
        ]
    }
};
style.js
只是一个虚拟入口点,在这里我只需导入css文件


感谢您的反馈。

至少我找到了解决这种奇怪行为的方法:

我现在使用MinicsSextract插件,而不是使用提取加载程序和文件加载程序。对于webpack v5,文件加载器仍被标记为已弃用

我还尝试了新的资产模块(正如webpack文档所建议的那样),但在我的场景中无法让它工作

这种方法的一个缺点是,我需要在
webpack.config.js
中为我要处理的每个css文件定义一个入口点,因为MinicsExtractPlugin为每个入口点生成一个css文件。在使用js文件作为虚拟入口点之前,我只需导入所有需要处理的css文件