Не удается оптимизировать изображения внутри папки с помощью grunt imagemin

Я пытаюсь оптимизировать изображения с помощью модуля imagemin grunt.

Моя структура каталогов выглядит следующим образом:

  • publicImg
    • главный
    • загружать
      • folder1
      • ...
      • folderN

Внутри каждой из папок 1..N есть файлы. Все они.jpg

Чего я хочу добиться, так это попытаться оптимизировать их все и заменить их более новыми версиями (с тем же именем). Я начал с более простой задачи, чтобы оптимизировать их и скопировать в другую папку (publicImagesсохранение той же структуры.

Просматривая документацию, я придумал следующий фрагмент JSON:

imagemin: {
    dynamic: {
        files: [{
            expand: true,
            cwd: 'publicImg/',
            src: ['*.jpg'],
            dest: 'publicImages/'
        }]
    }
}

что говорит мне Minified 0 images (saved 0 B)Я пытался использовать **/*jpg, **/*.{jpg} но все же с тем же эффектом. Как это можно сделать правильно?

1 ответ

Следующий конфиг у меня полностью работает. Проверено на вашей описанной среде.

package.json:

{
  "devDependencies": {
    "grunt": "^0.4.5",
    "grunt-contrib-imagemin": "^0.7.1"
  }
}

Gruntfile.js:

module.exports = function (grunt) {
  grunt.initConfig({
    imagemin: {
      dynamic: {
        files: [{
          expand: true,
          cwd: 'publicImg/',
          src: ['**/*.jpg'],
          dest: 'publicImages/'
        }]
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-imagemin');
  grunt.registerTask('default', ['imagemin']);
};

Выход:

raiden@toluca:~/projects/test$ tree publicImg/
publicImg/
├── main
└── upload
    ├── folder1
    │   ├── 2499085-metal-gear-solid-5-exteded-e3.jpg
    │   └── url.htm
    ├── folder2
    │   └── metal-gear-solid-5-ground-zeroes-collectibles.jpg
    └── folder3
        ├── 2574364-8751006069-14019.jpg
        ├── Metal-Gear-Solid-5-The-Phantom-Pain-Trailer.jpg
        └── Metal_Gear_Solid_V_Screenshot.jpg

5 directories, 6 files
raiden@toluca:~/projects/test$ grunt
Running "imagemin:dynamic" (imagemin) task
✔ publicImg/upload/folder1/2499085-metal-gear-solid-5-exteded-e3.jpg (saved 8.99 kB - 7%)
✔ publicImg/upload/folder2/metal-gear-solid-5-ground-zeroes-collectibles.jpg (saved 8.5 kB - 25%)
✔ publicImg/upload/folder3/2574364-8751006069-14019.jpg (already optimized)
✔ publicImg/upload/folder3/Metal-Gear-Solid-5-The-Phantom-Pain-Trailer.jpg (saved 2.22 kB - 3%)
✔ publicImg/upload/folder3/Metal_Gear_Solid_V_Screenshot.jpg (already optimized)
Minified 5 images (saved 19.71 kB)

Done, without errors.
raiden@toluca:~/projects/test$ tree publicImages/
publicImages/
└── upload
    ├── folder1
    │   └── 2499085-metal-gear-solid-5-exteded-e3.jpg
    ├── folder2
    │   └── metal-gear-solid-5-ground-zeroes-collectibles.jpg
    └── folder3
        ├── 2574364-8751006069-14019.jpg
        ├── Metal-Gear-Solid-5-The-Phantom-Pain-Trailer.jpg
        └── Metal_Gear_Solid_V_Screenshot.jpg

4 directories, 5 files

Возможно, у вас есть проблемы с вашей установкой grunt-contrib-imagemin. Стараться сделать npm rebuild grunt-contrib-imagemin и посмотреть, есть ли какие-либо ошибки. Или обновить модуль npm update grunt-contrib-imagemin,

Другие вопросы по тегам