javascript - Webpack 并在保留文件结构的同时进行复制

标签 javascript webpack webpack-2 webpack-file-loader

我目前正在为一个新项目设置 webpack 工作流程,但我很难理解如何在保留旧文件夹结构的同时复制图像。

例如,我在/src/img/folder/name/01.png 下有图像

在 webpack 中使用以下规则,会导致所有图像直接存放到/dist/img/文件夹中,而不考虑文件夹结构。

{
  test: /\.(jpg|png|svg/gif)$/,
  exclude: [/node_modules/, /font/, /fonts/],
  use: {
    loader: 'file-loader',
    options: {
      name: '[name].[ext]',
      outputPath: 'img/',
      publicPath: 'img/ ',
    },
  },
},

我明白我实际上是在告诉 webpack 这样做,但是,我尝试阅读文件加载器文档并发现我可以使用 [path] 将图像存储到其相对文件夹中,但随后它们最终位于/dist/img/src/img/folder/name/01.png

我确实知道我可以将文件加载器上的上下文设置为指向特定目录,如下所示:

{
  test: /\.(jpg|png|svg|gif)$/,
  exclude: [/node_modules/, /font/],
  use: {
    loader: 'file-loader',
    options: {
      context: './src/vendors/mylib/img/',
      name: '[path][name].[ext]',
      outputPath: 'img/',
      publicPath: 'img/ ',
    },
  },
},

但这似乎非常多余。有没有一种更简单的方法可以让 webpack 从我和我依赖的库的各个/img/文件夹中复制图像,同时仍然保留复制文件的文件夹结构?

最佳答案

您可以使用copy-webpack-plugin将文件从一个位置复制到另一个位置。

您对 file-loader/img-loader 的使用不正确,loader 负责向 webpack 引入新的文件类型(基本上它们会转换 none-js类型转换为 js)。

简单用法:

const CopyWebpackPlugin = require('copy-webpack-plugin')

const config = {
  plugins: [
    new CopyWebpackPlugin([ ...patterns ], options)
  ]
}

关于javascript - Webpack 并在保留文件结构的同时进行复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50193006/

相关文章:

相当于 PHP $array[$i][] 的 JavaScript

javascript - Webpack '!' 导入如何工作?

webpack - 使用 Webpack 将 Nunjucks 文件编译成 HTML

javascript - 在故事书中用 react native 矢量图标 react native 网络问题

javascript - 单击时更改 radio 输入值(实际上将其更改回来)

javascript - express.js 和 angular.js 的区别在哪里?

webpack - 如何使用 webpack DLL 插件?

javascript - 如何在 webpack 中禁用 require-jsdoc eslint

javascript - 检查是否在所有(大多数)浏览器上启用了 javascript?

webpack - 如何找出哪个加载程序导致此警告 : 'loaderUtils.parseQuery() received a non-string value which can be problematic'