2014-09-23 3 views
5

Я пытался решить эту проблему уже более половины дня.imagemin: dist task throwing error

У меня есть проект angularjs, который я использую grunt для сборки.

Запуск моего grunt команде дать мне следующее:

`` ` Запуска "параллельный: расст"(параллельные) задачи

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. 

` ``

Вот моя imagemin задача в my GruntFile.js:

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

Я не могу найти что-либо в сетях, которые мне помогают. Я нашел эту открытую проблему, но никто не ответил пока: https://github.com/gruntjs/grunt-contrib-imagemin/issues/254

Спасибо.

ответ

6

Видимо, PNG сжатие требует libpng-dev библиотеку, и мне нужно, чтобы установить, что на моем сервере сборки с помощью:

sudo apt-get install libpng-dev

Я также обновил свой package.json использовать последний черновой-вно-imagemin ("^ 0,8,0")

Запуск npm install и grunt теперь работают без ошибок.

2

Короче говоря, я использую Fedora и проблема была решена:

(sudo) yum install optipng 

Вот длинный ответ.

Эта проблема была not obvious, потому что сообщение об ошибке мало говорит. Фактически это означает, что одна или несколько из четырех зависимостей отсутствовали (были):

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

И эти двоичные файлы зависят от ОС.

Процесс решения проблем является:

  1. запустить установку еще раз, чтобы увидеть, что не установлены: npm install grunt-contrib-imagemin
  2. Google сбойный компонент и посмотреть, как это может быть установлена ​​в вашей ОС. Установите все отсутствующие. (Ну, если я должен повторить шаг 1, у меня получилось такое же сообщение об ошибке, поэтому для меня это не помогло)
  3. затем попробуйте снова запустить задачу imagemin. Скрещенные пальцы.
1

Как автор/@ kevva из imagemin commented on a GitHub issue на grunt-contrib-imagemin, проблема заключается в том, что PR обновить mozjpeg и другие зависимости от текущей версии еще не в.

Вы используете неподдерживаемую версию imagemin-mozjpeg (grunt-contrib-imagemin еще не поддерживает потоковые плагины). Попробуйте npm install [email protected]

...

Да, они прекрасно работают с imagemin. Но grunt-contrib-imagemin еще не обновил зависимость imagemin до 2.0.0 (только что собрался вчера в 04b8c10), поэтому использует старый API.

1

imagemin ошибка за счет использования grunt serve:dist -mode.

Попробуйте вместо этого вместо этого.

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