node.js - Webpack 图像加载器通过 CSS 提供动态内联背景图像?

标签 node.js reactjs webpack webpack-dev-server

我将 webpack 与 React 一起使用,我通常这样导入和使用我的图像:

 import CalNotices from 'assets/img/calendar-notices.png';

 <img className='img-center' role='presentation' src={CalNotices}/>

效果很好,当我进行生产构建时,这些图像会整齐地放入适当的文件夹中。

但是,有时,我想使用图像作为背景,并这样使用它:

const divStyle = {
     backgroundImage: `url(${item.logo})`,
     backgroundSize: 'contain',
     backgroundRepeat: 'no-repeat',
     backgroundPosition: 'center' 
}
<div className='image-holder' style={divStyle}></div>

其中 item.logo 是图像的绝对路径。

这在开发中工作得很好,但是当我进行产品构建时,这些图像显然丢失了,因为它们没有被 webpack 图像加载器拾取。我应该如何处理这个问题?

我的图像加载器配置是

{
    test: /\.(jpg|png|gif|eot|svg|ttf|woff|woff2)(\?.*)?$/,
    include: [paths.appSrc, paths.appNodeModules],
    loader: 'file',
    query: {
      name: 'static/media/[name].[ext]'
    }
},

最佳答案

根据您的评论(所有图像均位于 /src/assets/img/logos 中),您可以利用 webpack 的 require.context在构建时捆绑整个 Logo 文件夹的功能:

// causes webpack to find and bundle *all* files in logos or one of its subfolders.
const logoContext = require.context("assets/img/logos", true, /\.(png|jpg)$/);

// later...in your render() method
// assumes item.logo is a path relative to the logos folder
// example: "credit-card-xxx.jpg" or "./credit-card-xxx.jpg"
const logoUrl = logoContext.resolve(item.logo);

关于node.js - Webpack 图像加载器通过 CSS 提供动态内联背景图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39236036/

相关文章:

javascript - 如何为多个环境设置环境变量?

angular - 带有 Angular 的 Webpack 别名 - 不能使用命名空间 'UtilsService' 作为类型

javascript - NodeJS 和用于搜索查询的嵌套函数

node.js - RailwayJS 和 Mongoose 以及选项 --coffee

json - AngularJS 未在 Http POST 中设置正确的内容类型

reactjs - 如何让Material ui对话框显示在屏幕高度的前半部分?

javascript - 在 MongoDB 中存储 dataURL 以通过本地 URL (JS) 访问它

node.js - 我如何知道它是否在 lambda 内部运行?

node.js - 在 Heroku 部署中响应 axios 调用 Express API

reactjs - 用于生产的 Preact 和 Webpack