imagemin:dist任务引发错误



我已经尝试解决这个问题超过半天了。

我有一个angularjs项目,我用grunt来构建。

运行我的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.

```

这是我在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

谢谢。

显然,png压缩需要libpng-dev库,我需要使用在构建服务器上安装它

sudo apt-get install libpng-dev

我还更新了我的软件包.json,使用了最新的grunt contrib imagemin("^0.8.0")

运行npm installgrunt现在可以在没有错误的情况下工作。

简而言之,我使用的是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任务。祝你好运

imagemin使用grunt serve:dist-模式时出错。

请尝试以下操作。

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

正如imagemin的作者/@kevva对grunt-contrib-imagemin上的GitHub问题所评论的那样,问题是将mozjpeg和其他依赖项更新到当前版本的PR尚未发布。

您使用的是不受支持的imagemin-mozjpeg版本(grunt contrib imagemin还不支持基于流的插件)。试试这个npm install imagemin-mozjpeg@1

是的,它们和imagemin配合得很好。但是grunt-contrib-imagemin还没有将imagemin依赖项更新到2.0.0(昨天在04b8c10中刚刚合并),所以它使用了一个旧的API。

相关内容

最新更新