我在每个文件夹中有一组文件夹和图像。如下所示:
+ Folder 1
Image1.jpg
+ Folder 2
Image1.jpg
+ Folder 3
Image3.jpg
....
我正在尝试使用带有以下代码的“imagemin”node.js 包优化文件夹内的所有图像:
const imagemin = require('imagemin');
const imageminMozjpeg = require('imagemin-mozjpeg');
const imageminPngquant = require('imagemin-pngquant');
imagemin(['images/**/*.{jpg,png,jpeg,JPG,JPEG,PNG}'], 'images/dist', {
plugins: [
imageminMozjpeg(),
imageminPngquant({quality: '20-35'})
]
}).then(files => {
console.log(files);
//=> [{data: <Buffer 89 50 4e …>, path: 'build/images/foo.jpg'}, …]
});
我可以使用单个文件夹作为目标。有没有办法覆盖图像或保持相同的文件夹结构?
最佳答案
实际上,imagemin 并没有提供参数来保持文件夹结构。
通过逐个压缩图像是一种解决方案,看看我的示例代码:
const imagemin = require('imagemin');
const imageminPngquant = require('imagemin-pngquant');
const globby = require('globby');
const path = require('path');
// here we got each pic path
globby('png/**/*.png', { nodir: true }).then(filePaths => {
filePaths.forEach(filePath => {
let fileDir = path.dirname(filePath);
doCompress(filePath, 'out/' + fileDir);
})
});
function doCompress(srcFile, outDir) {
imagemin([srcFile], outDir, {
use: [
imageminPngquant({
quality: '80',
speed: 4
})]
}).then((ret) => {
// todo something
});
}
关于node.js - 如何优化保留文件夹结构的所有子文件夹中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39696139/