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
-Режим.
Попробуйте следующее.
npm uninstall
rm -rf node_modules
npm cache clean
npm install
Короче я пользуюсь Fedora
и моя проблема была решена путем:
(sudo) yum install optipng
Вот длинный ответ.
Эта проблема не была очевидна, потому что сообщение об ошибке не говорит о многом. На самом деле это означает, что одна или несколько из четырех зависимостей отсутствовали (были):
gifsicle — Compress GIF images
jpegtran — Compress JPEG images
optipng — Compress PNG images
svgo — Compress SVG images
И эти двоичные файлы зависят от ОС.
Процесс решения проблемы:
- снова запустите установку, чтобы увидеть, что не установлено:
npm install grunt-contrib-imagemin
- погуглите неисправный компонент и посмотрите, как это можно установить в вашей ОС. Установите все недостающие. (Хорошо, если я должен повторить шаг 1, я получил то же самое сообщение об ошибке, поэтому для меня это не помогло)
- затем попробуйте снова запустить задачу 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.