Webpack-使用文件加载器需要图像
我正在使用webpack的Reaction应用程序。
我在webpack的配置中安装了‘文件加载器’和‘网址加载器’。
但是,我不确定如何将图像链接到我的组件。我将该图像的‘src’保存在一个‘Data.js’文件中,我从该文件将该图像的数据传递给Reaction组件。我的webpack.config.js:
...
const PATHS = {
app : path.join( __dirname, "app" ),
build : path.join( __dirname, "build" )
};
const common = {
entry : {
app : PATHS.app
},
output : {
path : PATHS.build,
filename : "bundle.js"
},
module : {
preLoaders : [
...
loaders : [
{
test : /.css$/,
loaders : [ "style", "css" ],
include : PATHS.app
},
{
test : /.jsx?$/,
loader : "babel",
query : {
cacheDirectory : true,
presets : [ "react", "es2015" ]
},
include : PATHS.app
},
{
test : /.(jpg|png)$/,
loader : "file-loader?name=[name].[ext]",
include : PATHS.app
}
...
我是我的Reaction演示组件,我只是使用require
来检索图像:
const PreviewTemImgParent = ({ data }) => {
let img = require( data.get( "src" ));
return(
<div className = "card previewImgParent">
<img
src = { img }
...
Data.js文件有每个图像的绝对路径(主应用程序文件夹)(我在这里可能出错了):
export const previewTemImgData = Map({
body : List.of(
Map({ // using immutable.js
src : "app/css/asset/template/png/body/GatheredAtEmpireLine.png",
alt : "image",
className : "flipParent",
...
有关其价值的全局目录图像:
我想知道我在哪里犯了错误,以及如何解决这个问题?
编辑: 看了一遍,我觉得webpack需要参考图片的相对位置,所以我把webpack.fig.js修改为:
...
output : {
path : PATHS.build,
publicPath : "/",
filename : "bundle.js"
}
...
然而,这并没有解决问题。我们将不胜感激。
解决方案
建议:
1.使用url-loader
获取图像。
通过在您的webpack配置中指定limit
,例如:url-loader?limit=8000
,如果文件小于8000字节。url-loader
作品看起来像file-loader
。将文件嵌入到主条目的包输出中。如果不是,请参见第2点。
2.在css/scss中使用url(地址)以使用图像
这里有一个由webpack和URL-Loader提供支持的例子:
background: url('../images/heroBanner.png') no-repeat center center fixed;
因为文件足够大,webpack会像其他包一样将文件转换到输出目录。它将在加载网页时发送对此图像的HTTP请求。
https://github.com/EcutDavid/EcutDavid.github.io/blob/8346f18dccdae18c4d6e98eb9b8cc51d62338cb5/src/styles/Header.scss#L2
相关文章