Webpack是否可以处理目录中的所有图像而不需要它们?

埃德·德·阿尔梅达

我正在使用ReactJS创建一个网站,并使用Webpack对其进行捆绑。

我的组件之一只是一列包含图像(徽标)的列。现在大约有15张图像将被随机显示,但是这个数目肯定会随着时间而增加。

当然,如果我对所有这些进行硬编码,那将是非常糟糕的,例如:

import image01 from './logos/01.png';
import image02 from './logos/02.png';
import image03 from './logos/03.png';
.
.
.

这意味着每次我必须添加新图像时都要更改代码。

我是这样做的:

logos.jsx

import React from 'react';
import './logos.css';

export default class Logos extends React.Component {

  constructor(props) {
    super(props);
    this.state = {
      logos: null
    }
  }

  componentWillMount() {
    fetch('/random_logos')
    .then(res => res.json())
    .then(json => {
      this.setState({
        logos: json.logos
      });
    });
  }

  render() {
    return (
      <div className="logos">
        // code to display the logos in a column
      </div>
    );
  }
}

这会从后端获取随机可用的徽标列表,并使其可用于组件。

碰巧我的代码可以正常工作npm start,但是当我将所有内容与Webpack捆绑在一起时,Webpackmy/application/dir/src/logos/logos不会将其文件移动到正确的目录(即)my/application/dir/resources/images/logos,因为它们没有被导入!

有没有一种方法可以告诉Webpack在特定目录下处理文件,而无需在我们的代码中特别要求它们?还是我必须创建一个scritp才能将这些文件复制到生产目录中?

这是我的Webpack配置:

webpack.config.js

var path = require('path');

module.exports = {
    entry: path.resolve(__dirname, 'fe/src/') + '/index.jsx',
    output: {
        path: path.resolve(__dirname, 'public/js'), 
        filename: 'bundle.js'
    },
    module: {
        loaders: [
            {
                test: /\.jsx?$/,
                exclude: [ "node_modules" ],
                loader: 'babel-loader',
                query: {
                    presets: ['es2015', 'react','stage-0']
                }
            },
            {
                test: /\.css$/, loader: "style-loader!css-loader"
            },
            {
                test: /\.(jpe?g|png|gif|bmp|svg|ico)$/i,
                use: 'file-loader?name=[name].[ext]&outputPath=resources/images/'
            },
            {
                test: /\.(eot|svg|ttf|woff|woff2)$/,
                loader: 'file-loader?name=resources/fonts/[name].[ext]'
            }
        ]
    }
}

如果我命名的五个文件01.png02.png03.png04.png05.png,我的后端会返回一个像这样的JSON:

{
  "logos": [
    "05.png",
    "03.png",
    "01.png",
    "02.png",
    "04.png"
  ]
}
克拉西米尔

我建议使用https://github.com/kevlened/copy-webpack-plugin只需将插件添加到您的webpack配置中,如下所示:

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

module.exports = {
  ...,
  plugins: [
    new CopyWebpackPlugin([
        { from: '...', to: '...' }
    ])
  ]
}

然后,只需从正确的文件夹中引用您的徽标即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从所有目录的集合中删除不需要的目录:android?

如何从树中删除所有隐藏的不需要的目录?

是否可以不需要Java中的模块?

如何在React Native中显示Firebase存储中的所有图像而不需要图像名称?

如何在不需要同一目录中的所有 dll 文件的情况下运行 exe?

rails-需要单个文件,但是不需要所有目录

在group by中,是否有一种方法可以告诉SQL特定列不需要聚合函数?

是否有不需要固线或结束标记的所有html标记的列表?

即使我现在不需要它们的全部容量,也应该将所有四个HDD都放入NAS中吗?

Webpack外部不需要

Webpack是否可以捆绑js文件而不需要或导入?问题2:为什么需要图表?

是否可以使HTTP请求中不需要的必填属性?

如果不创建表单,是否可以使Django中不需要的管理字段?

我可以从本地Git存储库中丢弃不需要的/不需要的提交吗?

从清单中删除不需要的Azure AD目录

使用 cmd 文件从 PATH 中删除不需要的目录

git repo长满源目录中不需要的文件

如何删除不需要自动响应所有文件中的本机的导入?

从所有行的日志文件中删除不需要的部分

赢窗体按钮图像有不需要的边框

有什么方法可以删除语法规则中不需要的空格?

sql - 查找所有不需要红色部分的作业

是否有首选的Observable类型,而在Next事件中不需要值?

Windows中是否有不需要切换用户的“切换用户”功能?

在子类中处理不需要的参数?(java)

OpenCV:如何删除图像中不需要的部分

使用Python从图像中删除不需要的连接像素

图像分割 - 在 C++ 中删除不需要的像素

您是否需要 Solidity 0.8+ 版中的 SafeMath,如果不需要,您還可以導入嗎?