grunt-contrib-imagemin output "Fatal error: ENOENT, no such file or directory"



>该命令grunt imagemin将以下内容输出到随机文件。

Fatal error: ENOENT, no such file or directory 'app/public/assets/img/epg/recordseries.png'

有趣的是,每次我再次运行命令 grunt imagemin 时,它都会设法处理更多文件,并以输出有关另一个文件的相同错误结束。

我正在使用

node v0.10.24
npm 1.3.21
grunt@0.4.2
grunt-contrib-imagemin@0.5.0 node_modules/grunt-contrib-imagemin
+-- filesize@2.0.0
+-- async@0.2.9
+-- chalk@0.4.0 (has-color@0.1.2, ansi-styles@1.0.0, strip-ansi@0.1.1)
+-- image-min@0.1.2 (mkdirp@0.3.5, cache-file@0.1.2, mout@0.7.1, optipng-bin@0.3.1, jpegtran-bin@0.2.3, gifsicle@0.1.4)

这是我对imagemin任务的咕噜声配置:

grunt.config('imagemin', {
    options: {
        optimizationLevel: 3, // 0 to 7, default =7)
        // pngquant: true
    },
    dynamic: {                                          // Multiple target
        files: [{
            expand: true,                               // Enable dynamic expansion
            cwd: '<%= context.source %>/assets/img/',   // equal to app/wesource/assets/img/
            src: ['!**/*-'+arrayToRegexStr(platformIgnoreList)+'**', '**/*.{png,jpg,jpeg,gif}'],                // Actual patterns to match //
            dest: '<%= context.public %>/assets/img/'   // equal to app/public/assets/img/
        }]
    }
});

卸载版本 0.5.0 并使用以下命令返回到版本 0.3.0 应该会恢复以前的功能:

npm uninstall grunt-contrib-imagemin
npm install --save-dev grunt-contrib-imagemin@0.3.0

https://github.com/gruntjs/grunt-contrib-imagemin/issues/140,有一个问题正在处理中,修复后应该可以安全地升级。

以下解决方案适用于...

  • Ubuntu Linux 13.10 x64
  • npm --version = 1.3.11
  • 节点 --版本 = v0.10.21
  • grunt-contrib-imagemin = 0.5.0

这是一个解决方案的黑客,但我发现任务在查看目标目录以查看PNG图像是否已存在并已优化时失败。当我一遍又一遍地运行它时,任务会始终完成,每次它都会完成更多的图像。我可以通过运行grunt clean来重复这个问题,然后一遍又一遍地grunt imagemin

我看到的错误是:

bash Fatal error: ENOENT, no such file or directory 'build-production/path-to/some-image.png'

溶液

在优化图像之前,立即将图像复制到目标目录。这样,复制的检查通过和未优化的图像将替换为其优化的等效图像。

任务

grunt.task.run(
    'copy:imagemin',
    'imagemin'
);

复制配置

copy: {
    imagemin: {
        files: [{
                expand: true,
                cwd: '<%= exponential.client.src %>',
                src: ['images/**/*.{png,jpg,gif}'],
                dest: '<%= exponential.client.buildProduction %>'
        }]
    }
}

图像最小配置

imagemin: {
    buildProduction: {
        files: [{
            expand: true,
            cwd: '<%= exponential.client.src %>',
            src: ['images/**/*.{png,jpg,gif}'],
            dest: '<%= exponential.client.buildProduction %>'
        }]
    }
}

尝试使用 cache: false

为我工作。

我能够通过卸载我意外安装系统范围的optipng来解决问题。

我在grunt-contrib-imagemin上遇到了同样的问题,这是因为我用sudo运行grunt。

我的解决方法是在整个结构上做一个 chown 和一个 chmod,然后在没有 sudo 的情况下运行咕噜声......

我有用的是节点模块的全新安装我删除了node_modules目录并安装了 npm之后它又对我有用

相关内容

最新更新