【问题标题】:ember-cli-imagemin lossyPNG ImageMin.pngquant is not a functionember-cli-imagemin lossyPNG ImageMin.pngquant 不是函数
【发布时间】:2017-10-27 16:48:33
【问题描述】:

我正在尝试在 ember-cli-imagmin 插件中启用 lossyPNG 属性,以便为我的 .pngs 创建一个小文件。我在 ember-cli-build.js 中的 EmberApp 包含 imagemin,如下所示:

imagemin: {
  interlaced: true,
  optimizationLevel: 3,
  progressive: true,
  lossyPNG: true,
  pngquant: {
    speed: 1,
    quality: 80
  }
}

我的 package.json 中的依赖对象包括:

{ ...
  "ember-cli-imagemin": "0.4.0",
  "imagemin": "3.2.2",
  "imagemin-pngquant": "4.2.2",
  ...
}

但是,每当我运行 ember build 时,都会出现以下错误:

The Broccoli Plugin: [object Object] failed with:
TypeError: ImageMin.pngquant is not a function

此错误将我指向此 line in broccoli-imagemin。如果我在 ember-cli-build.js 中将 lossyPNG 设置为 false,那么我不会收到任何错误,但我的 png 可以根据 pagespeed 的结果进一步优化。为了能够使用 pngquant 进一步优化我的 png 图像,我缺少什么?

【问题讨论】:

    标签: ember.js ember-cli imagemin pngquant


    【解决方案1】:

    ember-cli-imagemin 所依赖的broccoli-imagemin 是问题所在。由于它自 2014 年 11 月以来没有更新,它使用的是旧版本的 imagemin,但 package.json specification 允许 imagemin v3.x。 pngquant 在 imagemin v3.2.0 中是 removed as a default property。因此,如果您在 package.json 中强制安装 imagemin v3.1.0,它应该可以工作。

    如果您想使用更新版本的 imagemin,请查看 this PR。我会尝试直接使用that branchYou can install that branch directly from the repo 与:

    ember install https://github.com/kanongil/ember-cli-imagemin.git#v5-imagemin
    

    这个分支改变了 imagemin 的工作方式。而不是传递选项,看起来你只是传递你想要使用的插件,然后将它们的选项直接传递给它们。

    var app = new EmberApp({
      imagemin: {
        plugins: [
          require('imagemin-jpegtran')({ progressive: true }),
          require('imagemin-pngquant')({speed: 1, quality: 80}),
          require('imagemin-svgo')()
        ]
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多