0

我有一个将图像转换为节点的脚本,但是在收到成功消息时遇到问题,但没有输出任何内容。

import imagemin from "imagemin";
import webp from "imagemin-webp";

var outputFolder = "./FSS-assets/webp";            // Output folder
var PNGImages = "./FSS-assets/*.png";         // PNG images
var JPEGImages = "./FSS-assets/*.jpg";        // JPEG images

imagemin([PNGImages], outputFolder, {
  plugins: [webp({
      lossless: true // Losslessly encode images
  })]
}).then(function() {
  console.log("Images converted!");
});

imagemin([JPEGImages], outputFolder, {
  plugins: [webp({
    quality: 65 // Quality setting from 0 to 100
  })]
}).then(function() {
  console.log("Images converted!");
});

我在跑步

  • 节点 v14.16.0
  • imagemin v8
  • imagemin-webp v6

我也尝试使用相对文件夹路径无济于事。这是在 Windows 10 上。

4

2 回答 2

1

那是因为imagemin有 2 个参数input,而options你给了 3 个参数。

文档

imagemin(input, options?)

Returns Promise<object[]> in the format {data: Buffer, sourcePath: string, destinationPath: string}.

因此,对于您的代码,它将是:

imagemin([PNGImages], {
  destination: outputFolder,
  plugins: [webp({
      lossless: true // Losslessly encode images
  })]
}).then(function() {
  console.log("Images converted!");
});

于 2021-07-08T13:31:34.277 回答
1

看起来你只需要稍微调整你的参数结构。To be ([images], { destination: '/output directory', plugins: {});

const files = await imagemin(['images/*.{jpg,png}'], {
destination: 'build/images',
plugins: [
    imageminJpegtran(),
    imageminPngquant({
        quality: [0.6, 0.8]
    })
]
});

希望这会有所帮助和有效。

于 2021-07-08T13:33:43.820 回答