伙计们,你有没有想过在web包中为图像设置一个特定的输出路径,但是在输出中创建的文件是输出文件夹根目录下的破碎文件(这里是dist)?创建了健康的文件,但没有链接。而在html中,css会链接破碎的文件
或者让我这么说:
我要创建的输出:
src
webpack/webpack.config.js
dist
|—— |fonts
|—— |js
|—— |img
-————--img1.jpg
-————--img2.png
———-—--img3.png
——- index.html
——- another.html
但最终输出:
src
webpack/webpack.config.js
dist
|—— |fonts
|—— |js
|—— |img
-————--img1.jpg
-————--img2.png
-————--img3.png
——- index.html
——- another.html
——- sdf8s7s.jpg => broken and linked file
——- sdf8ws3.png => broken and linked file
——- sd4sg7i.png => broken and linked file
.
//webpack/webpack.config.js
module.exports = {
entry: {
'bundle': path.resolve(__dirname, '../src/js/index.js'),
},
output: {
path: path.resolve(__dirname, "../dist"),
filename: "js/[name].js",
clean: true,
},
module: {
rules: [
//...
{
test: /.(png|svg|jp[e]g|gif|webp)$/i,
loader: 'file-loader',
options: {
outputPath: '/img/',
name: "[name].[ext]",
useRelativePaths: true,
publicPath: '../img/'
},
},
//...
],
},
plugins: [
//...
],
};
如果你仔细观察并尝试在文本编辑器中打开这些图像,你会得到到底发生了什么。无论如何,在新的webpack中,不需要文件加载器的图像,如文档所示。
我所做的解决这个问题是添加到webpack配置:
module.rules[{
test: /.(png|svg|jpg|jpeg|gif)$/i,
type: "asset/resource"
}]
和
output: {assetModuleFilename: 'images/[name][ext]'}
这应该修复链接,破碎的图像,和哈希