Будет ли такое построение логики при создании плагина для gulp правильным?

Одну попытку я сделал и тогда получил ссылку на "готовое решение", которое, к сожалению, я не смог запустить. Какое-то оно мутное и мне не понравилось. В общем я ,the вторую попытку и спрошу только совета. Я говорю так, словно Вы понимаете о чем :) Я хочу сделать авто-импорт для compass, но немного испытываю сложность с пониманием работы самого gulp, хотя прочел все советуемые и нет статьи.
Так как я привык делать краткое описание всего проекта в одном месте, то я решил в compass отвести под это место в main.scss. Типа - комментарии с содержанием файла и под ними импорт. Но для этого нужно парсить импортируемые файлы... Но сейчас не об этом:) Для того, чтобы не гонять эти файлы каждый раз, я сохраняю данные о изменении файла в массиве, если даты не совпадают, значит файл нужно открыть распарсить и перезаписать о нем данные в main.scss.
И вот приблизительно с этого момента и начинаются сложности. Но пока продолжу...
При вызове метода я получаю информационный поток о файле, я проверяю его на изменение и вот казалось бы и все.. Но нет. Я могу проверить файл на изменение, но не на удаление. Если файл удалился и сработал вызов таска из watch, то ко мне в плагин начал поступать поток, об окончании которого я не могу знать.
И получается, что каждый раз, когда поток доходит до моего рабочего метода, я должен проверить текущий файл на изменение и после этого начать обход всей директории ( * спрошу после ), чтобы узнать удалился какой-то файл или нет... Чтобы было понятно, то покажу на схеме. Вот как хотелось бы -
- watch вызвал мой таск.
- получил сведения о первом файле.
- проверил его на изменения.
- занес путь до текущего файла во временный массив.
-получил сведения о втором файле.
- проверил его на изменения.
- занес путь до текущего файла во временный массив.
- получил событие об окончании потока и собрал все импорты из main.scss и сверил с путями из временного массива. Выяснил, что один импорт лишний, так как упоминания о нем нет во временном массиве. Удалил этот импорт из main.scss.

А вот как есть -
- watch вызвал мой таск.
- получил сведения о первом файле.
- собрал все импорты из main.scss.
- обошел все директорию и сверил с импортfvb/
- удалил массив с импортами.
-получил сведения о втором файле.
- проверил его на изменения.
- собрал все импорты из main.scss.
- обошел все директорию и сверил с импортfvb/
- удалил массив с импортами.

То есть я не знаю что этот файл первый или последний и мне приходится всегда сканировать всю директорию и файл main.scss и собирать и удалять массив.
а
Это основная проблема. Если у неё есть решение о котором я не знаю, очень прошу объяснить на словах.

И второстепенная проблема ( * ) - как я могу из потока выдернуть путь на указанную директорию, дабы её просканировать?
  • Вопрос задан
  • 2302 просмотра
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Вы можете отслеживать добавления и удаления файлов с помощью gulp-watch плагина.
Ну и со стандартным gulp.watch тяжело сделать инкрементальные билды, с вышуказанным плагином проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы