我需要像 TinyPNG 一样压缩图像并将压缩图像保存在 dist 文件夹中。我使用 webpack 4 并找到了 imagemin-webpack。但我不明白有什么用:插件还是加载器?请帮助为此任务进行配置。
let path = require('path');
let ExtractTextPlugin = require("extract-text-webpack-plugin");
let {imageminLoader} = require("imagemin-webpack");
let imageminGifsicle = require("imagemin-gifsicle");
let conf = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, './dist/'),
filename: 'main.js',
publicPath: 'dist/'
},
module: {
rules: [
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: [
{
loader: "css-loader",
options: {
minimize: true,
sourceMap: true
}
}
]
})
},
{
test: /\.(jpe?g|png|gif|svg)$/i,
use: [
{
loader: "file-loader"
},
{
loader: imageminLoader,
options: {
cache: true,
bail: false,
imageminOptions: {
plugins: [imageminGifsicle()]
},
name: "[hash]-compressed.[ext]"
}
}
]
}
]
},
plugins: [
new ExtractTextPlugin("styles.css"),
]
};
Run Code Online (Sandbox Code Playgroud)
这是我的配置文件。运行构建命令后,图像没有任何反应。
小智 5
为了在 Webpack 4 中压缩图像,我使用“ img-loader ”。
{
test: /\.(jpe?g|png|gif|svg)$/i,
loaders: [
{
loader: 'file-loader',
options: {
name: '' + imgPath + '[name].[ext]'
}
},
{
loader: 'img-loader',
options: {
plugins: [
imageminGifsicle({
interlaced: false
}),
imageminMozjpeg({
progressive: true,
arithmetic: false
}),
imageminPngquant({
floyd: 0.5,
speed: 2
}),
imageminSvgo({
plugins: [
{ removeTitle: true },
{ convertPathData: false }
]
})
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
当然,这些是必需的变量:
const imgPath = './assets/img/';
const imageminGifsicle = require("imagemin-gifsicle");
const imageminPngquant = require("imagemin-pngquant");
const imageminSvgo = require("imagemin-svgo");
const imageminMozjpeg = require('imagemin-mozjpeg');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7728 次 |
| 最近记录: |