gpt4 book ai didi

javascript - Webpack 只加载 css 引用的图像。不加载js引用的图片

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:53 25 4
gpt4 key购买 nike

我的 dist 文件夹包含我的 index.html、contact.html、index.js、contact.js 和我的 css 提到的两个图像作为背景图像。

例如

background-image: url("../images/prairie.jpg");

这就是我的 dist 文件夹中的所有内容。所有其他图像(我的 css 没有提到)都没有加载。这些图像仅在 .js 文件(例如 slideshow.js)中提及。这个“slideshow.js”文件是一个幻灯片,它不显示任何图像,但显示丢失的图像图标。显示了前面提到的背景图像“../images/prairies.jpg”。 css 文件引用的所有照片都加载到 dist 文件夹中。仅由 .js 文件而不是 css 文件提及的所有照片都不会加载到 dist 文件夹中。

这是我的webpack.config.js

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HtmlWebpackTemplate = require('html-webpack-template');
const path = require('path');

const config = {
mode: 'development', // set mode option, 'development' or 'production'
entry: {
index: './src/index.js',
contact:'./src/contact.js'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: "[name].js",
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
use: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.(gif|png|jpe?g|svg)$/i,
use: [
'file-loader',
{
loader: 'image-webpack-loader',
options: {
bypassOnDebug: true, // webpack@1.x
disable: true, // webpack@2.x and newer
},
},
],
}
],
},
resolve: {
extensions: ['.js', '.jsx'],
},
plugins: [
new HtmlWebpackPlugin({
template: './index.html',
inject: true,
chunks: ['index'],
filename: './index.html'
}),
new HtmlWebpackPlugin({
template: './contact.html',
inject: true,
chunks: ['contact'],
filename: './contact.html'
})
]
};

module.exports = config;

最佳答案

当使用 webpack 时,当你还想捆绑图像/ Assets 时。您不能使用普通的 url 方案访问它们,例如。 /images/my-image.png .

这是因为您随后告诉您的应用程序以正常的 HTTP GET 方式加载,而不是通过您的包加载。

要像访问 webpack 中的任何其他 Assets 一样从 bundle 访问图像,您 require它.. const image1 = require("images/image1.png")等等。在内部,webpack 将在这里做的是将二进制图像转换为数据 uri。这意味着你可以做类似的事情 -> <img src={image1}/>

如果你有很多图片,你可以使用 require.context ,但我个人避免使用它,因为我有点喜欢对加载的 Assets 有更多的控制。

为了同时处理有趣的文件名,您还可以让 webpack 生成合理的名称并附加哈希。例如。在你的装载机中设置 loader类似 -> loader: 'file?name=[name].[ext]?[hash:5]' 的选项

更新:只是想如果您使用 file-loader插件,如果使用 file-loader,请忽略有关数据 uri 的部分webpack 正在做一种重新映射。如果你不使用 file-loader , 然后它将使用数据 uri 方式来完成它。但是在这两种情况下你都使用 require ..

关于javascript - Webpack 只加载 css 引用的图像。不加载js引用的图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57217494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com