web-dev-qa-db-fra.com

sortie de grunt-contrib-imagemin "Erreur fatale: ENOENT, aucun fichier ou répertoire de ce type"

La commande grunt imagemin affiche les éléments suivants dans un fichier aléatoire.

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

Ce qui est amusant, c’est que chaque fois que j’exécute à nouveau la commande grunt imagemin, elle parvient à traiter quelques fichiers de plus et termine en générant la même erreur à propos d’un autre fichier.

J'utilise

node v0.10.24
npm 1.3.21
[email protected]
[email protected] node_modules/grunt-contrib-imagemin
+-- [email protected]
+-- [email protected]
+-- [email protected] ([email protected], [email protected], [email protected])
+-- [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

Voici ma configuration de grunt pour la tâche 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/
        }]
    }
});
14
svassr

La désinstallation de la version 0.5.0 et le retour à la version 0.3.0 avec les commandes suivantes devraient restaurer la fonctionnalité précédente:

npm uninstall grunt-contrib-imagemin

npm install --save-dev [email protected]

Il existe un problème, https://github.com/gruntjs/grunt-contrib-imagemin/issues/140 , qui est en cours de traitement et qui, une fois résolu, devrait pouvoir être mis à niveau en toute sécurité.

12
Jason Aller

Les solutions suivantes fonctionnent sur ...

  • Ubuntu Linux 13.10 x64
  • npm --version = 1.3.11
  • noeud --version = v0.10.21
  • grunt-contrib-imagemin = 0.5.0

Il s’agit là d’une solution simple, mais j’ai constaté que la tâche échouait lorsqu’elle examinait le répertoire cible pour voir si l’image PNG existait déjà et était optimisée. La tâche se terminait systématiquement lorsque je l'exécutais encore et encore, chaque fois qu'elle complétait quelques images supplémentaires. Et je pourrais répéter le problème en exécutant grunt clean, puis grunt imagemin encore et encore.

L'erreur que j'ai vue était:

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

Solution

Copiez les images dans le répertoire cible immédiatement avant de les optimiser. De cette façon, les vérifications réussies et les images non optimisées copiées sont remplacées par leur équivalent optimisé.

tâche

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

copier la configuration

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

configuration imagemin

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

J'ai pu résoudre le problème en désinstallant optipng que j'avais installé accidentellement à l'échelle du système.

2
Reto Aebersold

Essayez d’utiliser cache: false

a travaillé pour moi.

2

J'ai eu le même problème avec grunt-contrib-imagemin et c'était parce que je courais avec Grunt avec Sudo.

Ma solution était de faire un chown et un chmod sur toute la structure puis de grogner sans Sudo ...

1
Scuba Josh

ce qui a fonctionné pour moi, c’est une installation propre des modules de nœud . Je supprime le répertoire node_modules et npm install après que cela fonctionne à nouveau pour moi.

0
justCarakas