我一直试图解决这个问题超过半天。
我有一个angularjs项目,我使用grunt构建。
运行我的grunt
命令会给我以下内容:
``` 运行“concurrent: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.
```
这是我的GruntFile.js中的imagemin任务:
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
感谢。
答案 0 :(得分:6)
显然,png压缩需要libpng-dev
库,我需要使用以下命令在我的构建服务器上安装:
sudo apt-get install libpng-dev
我还更新了我的package.json以使用最新的grunt-contrib-imagemin(“^ 0.8.0”)
正在运行npm install
和grunt
现在无错误。
答案 1 :(得分:2)
简而言之,我正在使用Fedora
,我的问题通过以下方式解决:
(sudo) yum install optipng
这是一个很长的答案。
此问题为not obvious,因为错误消息并不多见。它实际上意味着缺少四个依赖项中的一个或多个:
gifsicle — Compress GIF images
jpegtran — Compress JPEG images
optipng — Compress PNG images
svgo — Compress SVG images
这些二进制文件依赖于操作系统。
问题解决过程是:
npm install grunt-contrib-imagemin
答案 2 :(得分:2)
grunt serve:dist
- 模式错误imagemin 。
请尝试以下方法。
npm uninstall
rm -rf node_modules
npm cache clean
npm install
答案 3 :(得分:1)
作为grunt-contrib-imagemin
上mozjpeg
的作者/ @ kevva,问题是更新npm install imagemin-mozjpeg@1
的PR和当前版本的其他依赖关系还没有。
您正在使用不受支持的imagemin-mozjpeg版本(grunt-contrib-imagemin尚不支持基于流的插件)。试试这个{{1}}
...
是的,他们使用imagemin工作得很好。但是grunt-contrib-imagemin还没有将imagemin依赖关系更新到2.0.0(昨天刚刚在04b8c10中合并),所以它正在使用旧的API。