node.js - 如何优化保留文件夹结构的所有子文件夹中的图像?

标签 node.js ubuntu optimization

我在每个文件夹中有一组文件夹和图像。如下所示:

+ 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/

相关文章:

node.js - 如何在 Visual Studio 2015 中禁用 NPM 包还原?

node.js - 限制 Node.js 中的连接数

python - 在 Ubuntu 中从 pip 安装包中找到源代码

c++ - 不是编译器优化 C++ 中的代码部分

php - 用于处理数据的 MySQL 与 Web 服务器

javascript - 如何重构此 Node.js 代码,以避免重复

node.js - Base64string 上的 Nodejs 有效负载太大(Http 413)

ubuntu - GitHub 卡住比较或拉取请求 Firefox Developer Edition

windows-7 - 在 Ubuntu 和 Windows 7 之间共享双引导存储库?

sql-server - 动态查询优化