imagemin: ошибка броска задачи dist

Я пытался решить эту проблему уже более половины дня.

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

Работает мой grunt Команда даст мне следующее:

`` `Выполнение" одновременной:dist" (параллельной) задачи

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 в моем 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

Благодарю.

4 ответа

Решение

По-видимому, сжатие PNG требует libpng-dev библиотека, и мне нужно было установить это на моем сервере сборки, используя:

sudo apt-get install libpng-dev

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

Бег npm install а также grunt теперь работают без ошибок.

Ошибкаimagemin при использовании grunt serve:dist-Режим.

Попробуйте следующее.

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

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

(sudo) yum install optipng

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

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

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

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

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

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

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

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

...

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

Другие вопросы по тегам