2014-09-23 4 views
5

Ich habe versucht, dies für mehr als den halben Tag jetzt zu lösen.imagemin: dist Aufgabe werfen Fehler

Ich habe ein angularjs Projekt, das ich grunt zu bauen verwende.

mein grunt Befehl Ausführen geben Sie mir folgendes:

`` ` Running "gleichzeitig: dist"(concurrent) Aufgabe

Running "svgmin:dist" (svgmin) task 
Total saved: 0 B 

Done, without errors. 


Execution Time (2014-09-23 21:53:55 UTC) 
loading tasks 7ms ▇▇▇▇▇▇ 11% 
svgmin:dist 58ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 89% 
Total 65ms 
    Warning: Running "imagemin:dist" (imagemin) task 
Fatal error: Object #<DestroyableTransform> has no method 'apply' 


Execution Time (2014-09-23 21:53:55 UTC) 
imagemin:dist 868ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 99% 
Total 876ms Use --force to continue. 

    Aborted due to warnings. 

` ``

Hier Aufgabe mein imagemin ist in mein GruntFile.js:

imagemin: { dist: { files: [ { expand: true, cwd: '<%= yeoman.app %>/images', src: '{,*/}*.{png,jpg,jpeg,gif}', dest: '<%= yeoman.dist %>/images' } ] } }

Ich kann nichts über die Interwebs finden, die mir helfen. Ich habe dieses offene Problem gefunden, aber niemand hat bis jetzt geantwortet: https://github.com/gruntjs/grunt-contrib-imagemin/issues/254

Danke.

Antwort

6

Offenbar png Kompression erfordert die libpng-dev Bibliothek und ich brauchte, dass auf meinem Build-Server zu installieren, mit:

sudo apt-get install libpng-dev

ich meine package.json auch die neueste Grunzen-contrib-imagemin verwenden aktualisiert ("^ 0.8.0")

Das Ausführen von npm install und grunt funktioniert jetzt ohne Fehler.

2

Kurz gesagt, ich bin mit Fedora und mein Problem wurde gelöst durch:

(sudo) yum install optipng 

Hier ist die lange Antwort.

Dieses Problem war not obvious, weil die Fehlermeldung nicht viel erzählt. Es bedeutet eigentlich eine oder mehrere der vier Abhängigkeiten wurde (n) fehlt:

gifsicle — Compress GIF images 
jpegtran — Compress JPEG images 
optipng — Compress PNG images 
svgo — Compress SVG images 

Und diese Binärdateien sind OS abhängig.

Der Problemlösungsprozess ist:

  1. die Installation erneut ausführen, um zu sehen, was nicht installiert ist: npm install grunt-contrib-imagemin
  2. die fehlerhafte Komponente Google und sehen, wie das in Ihrem Betriebssystem installiert werden. Installiere alle fehlenden. (Nun, wenn ich Schritt 1 wiederholen sollte, habe ich die gleiche Fehlermeldung erhalten, also für mich hat es nicht geholfen)
  3. dann versuchen Sie erneut Imagemin Task ausführen. Daumen drücken.
1

Als Autor/@ kevva von imagemin commented on a GitHub issue auf grunt-contrib-imagemin, ist das Problem, dass die PR mozjpeg und andere Abhängigkeiten auf die aktuelle Version zu aktualisieren, ist noch nicht in.

Sie verwenden eine nicht unterstützte Version von imagemin-mozjpeg (grunt-contrib-imagemin unterstützt die Stream-basierten Plugins noch nicht). Versuchen Sie, diese npm install [email protected]

...

Ja, sie mit imagemin gut funktionieren. Aber grunt-contrib-imagemin hat die imagemin-Abhängigkeit noch nicht auf 2.0.0 aktualisiert (wurde erst gestern in 04b8c10 zusammengeführt), also nutzt es eine ältere API.

1

imagemin Fehler durch grunt serve:dist -Mode verwendet wird.

Versuchen Sie stattdessen Folgendes.

  1. npm uninstall
  2. rm -rf node_modules
  3. npm cache clean
  4. npm install