2017-05-26 45 views
1

我試圖在ember-cli-imagmin插件中啓用lossyPNG屬性來爲我的.png創建一個小文件大小。我在灰燼-CLI-build.js EmberApp包括imagemin像這樣:ember-cli-imagemin lossyPNG ImageMin.pngquant不是函數

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", 
    ... 
} 

但是,每當我跑燼構建,我得到以下錯誤:

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

此錯誤指向此line in broccoli-imagemin。如果我在ember-cli-build.js中將lossyPNG設置爲false,那麼我不會收到任何錯誤,但是可以根據pagespeed的結果進一步優化我的png。我錯過了什麼能夠使用pngquant進一步優化我的PNG圖像?

回答

3

broccoli-imagemin,其中ember-cli-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')() 
    ] 
    } 
});