Grunt - смотреть новые папки

Я пытаюсь заставить grunt-contrib-watch просматривать папку с моими изображениями и запускать grunt-imageoptim для любых добавленных/измененных файлов jpg, gif или png.

Мой приведенный ниже код отлично работает для запуска imageoptim на новых изображениях, если я не создаю новые папки. Очевидно, это было исправлено в последних версиях, но я новичок в Grunt, так что это может быть что-то основное, что мне не хватает. Я получил его, чтобы увидеть изменения / новые папки в часах с помощью менее конкретного подстановочного знака, но тогда я не могу остановить запуск imageoptim на всех изображениях во всех папках.

    module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    imageoptim: {
      options: {
        jpegMini: false,
        imageAlpha: true,
        quitAfter: true
      },
    },
    watch: {
      files: ['images/**/*.jpg', 'images/**/*.png', 'images/**/*.gif'],
      tasks: ['imageoptim'],
      options: {
        spawn: false,
      },
    },
  });


  // imageoptim
  grunt.loadNpmTasks('grunt-imageoptim');
  // grunt watch
  grunt.loadNpmTasks('grunt-contrib-watch');

  // Default task(s).
  grunt.registerTask('default', ['imageoptim']);

  var changedFiles = Object.create(null);
  var onChange = grunt.util._.debounce(function() {
    grunt.config('imageoptim.all.src', Object.keys(changedFiles));
    changedFiles = Object.create(null);
  }, 200);
  grunt.event.on('watch', function(action, filepath) {
    changedFiles[filepath] = action;
    onChange();
  });
};

(нижняя функция состоит в том, чтобы запустить imageoptim при смене часов, а затем не дать ему увидеть свои собственные изменения как изменения, на которые нужно действовать снова)


person zazzyzeph    schedule 12.06.2014    source источник


Ответы (1)


Упс, ответил на мой собственный вопрос: P Я ранее (перед публикацией вопроса) устанавливал src в imageoptim вместо изменения файлов в часах. Это работает:

    module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    imageoptim: {
      options: {
        jpegMini: false,
        imageAlpha: true,
        quitAfter: true
      },
    },
    watch: {
      files: ['images/**'],
      tasks: ['imageoptim'],
      options: {
        spawn: false,
      },
    },
  });


  // imageoptim
  grunt.loadNpmTasks('grunt-imageoptim');
  // grunt watch
  grunt.loadNpmTasks('grunt-contrib-watch');

  // Default task(s).
  grunt.registerTask('default', ['imageoptim']);

  var changedFiles = Object.create(null);
  var onChange = grunt.util._.debounce(function() {
    grunt.config('imageoptim.all.src', Object.keys(changedFiles));
    changedFiles = Object.create(null);
  }, 200);
  grunt.event.on('watch', function(action, filepath) {
    changedFiles[filepath] = action;
    onChange();
  });
};
person zazzyzeph    schedule 12.06.2014