如何在生产中的 Sass 文件的 url 背景中添加子文件夹?

how can I add an subfolder in the url background in the Sass files in production?

NextJS 的开发模式下,我的 SASS 文件中的路径如下例所示:

background-image: url(/images/bg-header.png) !important;

但在生产模式下,我会将网站上传到域的子文件夹,例如:

www.domain.com/subfolder/

我需要这样构建:

background-image: url(/subfolder/images/bg-header.png) !important;

如何获取?

另外,我在我的配置文件中使用了 withCSSwithSass,我尝试了几个 next.config.js,但没有任何效果。

const config = {
....
webpack: (config, options) => {
        // config.resolve.alias["@assets"] = '/subfolder/';
        config.plugins.push(
            new MiniCssExtractPlugin({
                    filename: 'static/css/[name].css',
                    chunkFilename: 'static/css/[name].chunk.css',
                    publicPath: '/subfolder/'
            })
        );
        return config
    },
};
module.exports = withSass(withCss(config));

这个我也试过了,也没用。

 config.module.rules.push({
            test: /\.(png|jpg|gif|svg|ico)$/,
                use: [
                    {
                        loader: "url-loader",
                        options: {
                            limit: 8192,
                            fallback: "file-loader",
                            publicPath: "/subfolder/",
                            outputPath: "/subfolder/",
                            name: "/subfolder/[name].[ext]"
                        }
                    }
                ]
            });

感谢@grzegorz-t 的评论,我已经能够解决它,我把解决方案放在这里。

npm install postcss-url --save-dev

postcss.config.js

const isProd = process.env.NODE_ENV === 'production';
const subFolder = isProd ? '/subfolder' : '';

module.exports = {
    plugins: {
        'postcss-url': {
            url: (asset) => {
               if (asset.url[0] === '/'){
                   return subFolder+asset.url
               }
                return asset.url;
            }
        },
        autoprefixer: {}
    }
};