imagemin:dist任务抛出错误

时间:2014-09-23 22:09:09

标签: javascript angularjs gruntjs grunt-contrib-imagemin

我一直试图解决这个问题超过半天。

我有一个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

感谢。

4 个答案:

答案 0 :(得分:6)

显然,png压缩需要libpng-dev库,我需要使用以下命令在我的构建服务器上安装:

sudo apt-get install libpng-dev

我还更新了我的package.json以使用最新的grunt-contrib-imagemin(“^ 0.8.0”)

正在运行npm installgrunt现在无错误。

答案 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

这些二进制文件依赖于操作系统。

问题解决过程是:

  1. 再次运行安装以查看未安装的内容:npm install grunt-contrib-imagemin
  2. google失败的组件,看看如何在您的操作系统中安装它。安装所有缺失的。 (好吧,如果我重复第1步,我会收到同样的失败信息,所以对我来说没有帮助)
  3. 然后再次尝试运行imagemin任务。手指交叉。

答案 2 :(得分:2)

使用grunt serve:dist - 模式错误

imagemin

请尝试以下方法。

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

答案 3 :(得分:1)

作为grunt-contrib-imageminmozjpeg的作者/ @ kevva,问题是更新npm install imagemin-mozjpeg@1的PR和当前版本的其他依赖关系还没有。

  

您正在使用不受支持的imagemin-mozjpeg版本(grunt-contrib-imagemin尚不支持基于流的插件)。试试这个{{1}}

     

...

     

是的,他们使用imagemin工作得很好。但是grunt-contrib-imagemin还没有将imagemin依赖关系更新到2.0.0(昨天刚刚在04b8c10中合并),所以它正在使用旧的API。