2014-09-23 15 views
5

Ho cercato di risolvere questo problema per più di metà giornata.imagemin: errore di lancio del compito dist

Ho un progetto di angularjs che uso grugnito di costruire.

Esecuzione mio comando grunt mi danno il seguente:

`` ` Running "concurrent: dist" compito (concurrent)

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. 

` ``

Ecco il mio compito imagemin in i miei GruntFile.js:

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

Non riesco a trovare nulla nell'interwebs che mi aiuti. Ho trovato questa questione aperta, ma nessuno ha risposto come ancora: https://github.com/gruntjs/grunt-contrib-imagemin/issues/254

Grazie.

risposta

6

A quanto pare, png compressione richiede la libreria libpng-dev e ho bisogno di installare che sul mio server build usando:

sudo apt-get install libpng-dev

ho anche aggiornato il mio package.json di utilizzare l'ultima grugnito-contrib-imagemin ("^ 0.8.0")

In esecuzione npm install e grunt ora funzionano senza errori.

2

Insomma, sto usando Fedora e il mio problema è stato risolto:

(sudo) yum install optipng 

Ecco la risposta lunga.

Questo problema è stato not obvious perché il messaggio di errore non dice molto. Ciò significa in realtà una o più delle quattro dipendenze era (erano) mancante:

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

E quei binari sono dipende dal sistema operativo.

Il processo di problem solving è:

  1. eseguire nuovamente l'installazione di vedere ciò che non sono installati: npm install grunt-contrib-imagemin
  2. google il componente guasto e vedere come che può essere installato nel vostro sistema operativo. Installa tutti quelli mancanti. (Beh, se devo ripetere il passaggio 1, ho ottenuto lo stesso messaggio di errore, quindi per me non ha aiutato)
  3. quindi provare di nuovo gestita compito imagemin. Dita incrociate.
1

Come l'autore/@ kevva di imagemin commented on a GitHub issue sul grunt-contrib-imagemin, il problema è che il PR di aggiornare mozjpeg e altre dipendenze alla versione attuale, non è ancora.

Stai usando una versione non supportata di imagemin-mozjpeg (grunt-contrib-imagemin non supporta i plugin basati il ​​flusso ancora). Prova questo npm install [email protected]

...

Sì, lavorano molto bene con imagemin. Ma grunt-contrib-imagemin non ha ancora aggiornato la dipendenza da imagemin alla 2.0.0 (è appena stata incorporata ieri in 04b8c10), quindi utilizza una vecchia API.

1

imagemin errore attraverso l'utilizzo di grunt serve:dist -MODE.

Provare invece quanto segue.

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