Webpack4:如何处理子文件夹中的图片

Webpack4: how to deal with images in subfolders

我的图片在 src/images 目录的不同子文件夹中。当我 运行 使用 webpack 创建构建时,所有图像都被复制到一个 img 文件夹,同名图像只替换一个 another.This 是我的图像 webpack 配置:

 {
     test: /\.(png|jpe?g)/i,
     use: [
        {
           loader: "url-loader",
           options: {
              name: "img/[name].[ext]",
              limit: 10000
            }
         },
         {
            loader: "img-loader",
            options: {
                name: "img/[path]/[name].[ext]",
                useRelativePath: true
            }
         }
     ]
 }

能否请您建议如何配置 webpack 以使用与 src/images 中相同的文件夹结构来分隔图像。我是 webpack 的新手。谢谢


所以这是对我有用的最终答案:

{
                    test: /\.(png|jpe?g)/i,
                    use: [
                        {
                            loader: "url-loader",
                            options: {
                                name: "img/[path][name].[ext]",
                                context: "src/assets/images",
                                limit: 10000
                            }
                        },
                        {
                            loader: "img-loader",
                            options: {
                                name: "img/[path][name].[ext]",
                                context: "src/assets/images"
                            }
                        }
                    ]
                }

你在代码中要求 Webpack 处理图像文件:

loader: "url-loader",
options: {
    name: "img/[name].[ext]",
    limit: 10000
}

这意味着将所有文件以 img/[name].[ext] 的方式放置(将所有文件放在一个目录中 'img'),如果您想使用 "img/[path]/[name].[ext]" 可以保持原文件的路径结构。

因此,将您的代码块更改为:

{
test: /\.(png|jpe?g)/i,
use: [
    {
        loader: "url-loader",
        options: {
            name: "img/[path]/[name].[ext]",
            limit: 10000
        }
    },
    {
        loader: "img-loader",
        options: {
            name: "img/[path]/[name].[ext]",
            useRelativePath: true
        }
    }
  ]
}

可选的,如果目录结构有太多层次,你可以使用类似的东西:

options: {
    name: "img/[path]/[name].[ext]",
    context: "src" // or whatever common directories above actual images
}