【发布时间】:2021-10-18 12:59:53
【问题描述】:
我正在使用 Webpack 构建我的项目,但不知何故它构建了两次图像:
- 在 dist/images/ 文件夹中,构建正确。
- 再次在构建目录的根目录中,即 /dist 具有错误的散列名称。
然后将这些错误的散列名称分配给包含图像 URL 的元素。例如如果图像是 CSS 背景图像,则会将错误的名称设置为其 URL,而不是正确的名称。
dist/
结果
这是在 src/styles/app.css 中添加background-image: "../images/image.svg" 的结果
我的图片位于 src/images/image.svg。
webpack.config.js
modules: {
// CSS
{
test: /\.css$/i,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: "../images/", //to be able to use url images in my styles
},
},
{ loader: "css-loader", options: { importLoaders: 1 } },
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [autoprefixer({ supports: false })],
},
},
},
],
},
//SASS
{
test: /\.s[ac]ss$/i,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: "../images/", //to be able to use url images in my styles
},
},
{ loader: "css-loader", options: { importLoaders: 1 } },
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [autoprefixer({ supports: false })],
},
},
},
"sass-loader",
],
},
//Images
{
test: /\.(png|svg|jpg|jpeg|gif)$/i,
use: [
{
loader: "file-loader",
options: {
name: "[name].[ext]",
outputPath: "images/",
publicPath: "images/",
},
},
//Compress Images
{
loader: "image-webpack-loader",
},
],
},
},
plugins: [
new MiniCssExtractPlugin({
filename: "styles/[name].css",
}),
new ImageMinimizerPlugin({
minimizerOptions: {
plugins: [
["jpegtran", { progressive: true }],
["optipng", { optimizationLevel: 5 }],
[
"svgo",
{
plugins: [
{
removeViewBox: false,
},
],
},
],
],
},
}),
]
注意事项:
- /dist 中的散列图像格式不正确,当我打开它们时,它们会导致错误,即它们为空。
- 我曾尝试评论图像优化器,例如压缩图像以及之前列出的其他加载器和插件,但这没有任何改变。
谢谢
【问题讨论】:
标签: image webpack build frontend assets