Показать сообщение отдельно
  #1 (permalink)  
Старый 25.09.2015, 13:16
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Gulp watcher и Babel. Как компилировать только измененный файл?
Пытаюсь настроить Gulp. Хочу сделать таск "watch:all", который будет прослушивать и стили (SASS) и скрипты. Проблема в том, что все решения, которые есть в интернете, сводятся к тому, что Gulp слушает изменения во всех целевых файлах, и, если изменение произошло, компилирует все целевые файлы, а не тот, который изменился. При большом количестве модулей, компиляция может занять несколько секунд. Это раздражает, так как я обычно переключаюсь между редактором и браузером не более чем за полсекунды.

Здесь сильно выигрывает комманда babel watch. Она, как и нужно, компилирует только измененный файл. Получается, что имея Gulp, я по-прежнему должен запускать сторонние команды и, в качестве бонуса, запускать вотчер стилей в другой вкладке терминала. Абсурд.

Есть ли идеи, как реализовать вотчер наиболее элегантно?

Раньше пользовался Grunt, но меня подкупила скорость и элегантность Gulp.

Из проекта в проект копировал туда-сюда такой код:
grunt.event.on('watch', function(action, filepath) {
	if (~filepath.indexOf('.es')) {
		grunt.config(['babel', 'single', 'files'], [{
			src: filepath,
			dest: filepath.replace('src/', 'js/').replace('.es', '.js')
		}]);
	} else if (~filepath.indexOf('.js')) {
		grunt.file.delete(filepath.replace('src/', 'js/'));
		grunt.file.copy(filepath, filepath.replace('src/', 'js/'));
	}
});

Вяглядит уродливо, как по мне.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием