it-swarm.com.ru

grunt-contrib-imagemin output "Фатальная ошибка: ENOENT, такого файла или каталога нет"

Команда 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
[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])

Вот мой конфиг для задачи 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

Удаление версии 0.5.0 и возврат к версии 0.3.0 с помощью следующих команд должны восстановить предыдущую функциональность:

npm uninstall grunt-contrib-imagemin

npm install --save-dev [email protected]

Существует проблема, https://github.com/gruntjs/grunt-contrib-imagemin/issues/140 , над которой сейчас ведется работа, и когда она будет устранена, ее можно будет безопасно обновить.

12
Jason Aller

Следующие решения работают на ...

  • Ubuntu Linux 13.10 x64
  • npm - версия = 1.3.11
  • узел --version = 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

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

Я смог решить проблему, удалив optipng, что я случайно установил всю систему.

2
Reto Aebersold

Попробуйте использовать cache: false

работал на меня.

2
Rafael Vieira de Oliveira

У меня была та же проблема с grunt-contrib-imagemin, и это было из-за того, что я использовал grunt с Sudo.

Мое решение состояло в том, чтобы сделать chown и chmod для всей структуры, а затем запустить grunt без Sudo ...

1
Scuba Josh

у меня работала чистая установка модулей узлов Я удалил каталог node_modules и выполнил установку npm после этого он снова заработал для меня

0
justCarakas