【发布时间】:2021-07-18 21:25:08
【问题描述】:
(问题解决了!)
我正在尝试使用html-loader 和file-loader 来打包index.html img 标签src 属性中提到的图像源。
但它不起作用,因为 img 标签 src 没有引用正确的路径。
只是想知道我的配置有什么问题吗?
我的 github 测试仓库在这里:link
(既然问题解决了,我会将解决方案配置保留在分支“stackoverflow67250804”中)
我的webpack 配置:
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
entry: {
main: ['./src/index.js', './src/scss/main.scss'],
},
output: {
filename: '[name].js',
chunkFilename: '[name].min.js',
path: resolve(__dirname, 'build'),
},
mode: 'development',
module: {
rules: [
{
test: /\.html$/,
use: [
{
loader: 'html-loader',
}
],
},
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
},
{
test: /\.(jpg|png|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: '/img/',
pubicPath: '/img/'
}
}
],
}
]
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: './index.html'
})
]
}
./build 运行后的文件夹webpack
我的index.html
(我还尝试将 img src 属性更改为“./img/women.jpg”或“/img/women.jpg”或“img/women.jpg”,但没有任何作用,只是让 webpack 编译错误..)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img src="./src/img/women.jpg" alt="">
</body>
</html>
在./build 文件夹中构建index.html
(那么这是什么620b11833eb3b1be1f33.jpg?)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script defer src="main.js"></script></head>
<body>
<img src="620b11833eb3b1be1f33.jpg" alt="">
</body>
</html>
【问题讨论】:
-
我想你遇到了和我一样的问题,here 是我的问题。
-
@Daweed 我试过你的解决方案。它确实适用于我的 img src,但在编译 scss 背景图像 url 时失败了..
-
@Daweed 但我想你是对的,看来我必须为背景图像 url 编译添加一些配置设置。
-
是的,我没有使用 scss。
-
@Daweed 我试着按照这里的指南:webpack.js.org/guides/asset-modules,一切都像魅力:DD。非常感谢!
标签: javascript webpack