Как предотвратить самозапуск grunt-contrib-watch?

У меня есть эта грубая задача:

watch: {
  files: ['resources/assets/sass/*.scss'],
  tasks: ['csscomb:sortAll', 'sass:theme', 'sass:mail']
},
csscomb: {
  options: {
    config: 'csscomb.json'
  },
  sortAll: {
    expand: true,
    cwd: '.',
    src: ['resources/assets/sass/*.scss'],
    dist: 'resources/assets/sass/',
    ext: '.scss'        
  }
},

Когда я сохраняю любой файл scss, grunt пытается запустить указанные мной задачи, но csscomb:sortAll изменяет файлы scss и запускает другое изменение файла. ворчун наблюдает за задачами во второй раз, и в результате эти три задачи выполняются два раза, а не один раз. Что ты предлагаешь?


person Iman Mohamadi    schedule 04.11.2015    source источник
comment
Удалите csscomb из задачи наблюдения, и если вы хотите запустить csscomb, просто вызовите ее вручную..?   -  person aug    schedule 04.11.2015
comment
я бы настроил csscomb-task для помещения выходных файлов в другую папку и использовал папку sass только для dev   -  person hereandnow78    schedule 04.11.2015
comment
опубликуйте свою конфигурацию csscomb:sortAll для получения более подробных предложений.   -  person Xavier Priour    schedule 05.11.2015
comment
@aug Мне нужно, чтобы они оба запускались автоматически для каждого сохраняемого файла sass.   -  person Iman Mohamadi    schedule 05.11.2015
comment
@hereandnow78 звучит как хорошая идея, но вся цель использования csscomb заключалась в том, чтобы заставить каждого члена команды писать свой файл sass в уникальном формате, поэтому мне нужен csscomb для изменения исходных файлов.   -  person Iman Mohamadi    schedule 05.11.2015
comment
Я бы взглянул на grunt-newer, если вы просто запускаете csscomb в файле, который вы сохраняете.   -  person aug    schedule 05.11.2015
comment
@aug: это не сработает, потому что файлы новее (они изменены). Нет другого решения проблемы, кроме того, которое я предложил, или того, что вы сказали (удалить csscomb из задачи наблюдения). если вы хотите заставить команду придерживаться некоторых правил, используйте линтер: npmjs.com /package/grunt-scss-lint   -  person hereandnow78    schedule 05.11.2015


Ответы (1)


Просто используйте grunt-newer, чтобы при втором вызове задачи ничего не запускалось:

watch: {
  files: ['resources/assets/sass/*.scss'],
  tasks: ['newer:csscomb:sortAll', 'newer:sass:theme', 'newer:sass:mail']
},
person Xavier Priour    schedule 05.11.2015