Open LostSenSS opened 8 years ago
@LostSenSS тогда не будет работать gulp-jade-inheritance и шаблоны будут долго компилиться. Нужно выбирать меньшее из зол.
@artem-malko Опять же, это просто предложение было :) Если существуют веские причины так не делать и разница во времени компиляции очень значительна, то конечно, оно того не стоит.
@LostSenSS я понимаю, что это предложение) Обсуждаем же) На самом деле, если у тебя получится реализовать с глобом и inheritance — будет прям круто
Вот здесь человек @lamartire подсказал годный пример как можно решить такую проблему. Я заюзил это в текущем проекте. Работает!
А инхеританце по моим прикидкам не сильно ускоряет процесс перекомпиляции.
Вот здесь человек описал ещё одно решение.
Нужно собрать все практики в кучку и потестить на производительность пересборки.
@jt3k можно ли тебе делегировать эту задачу?
@artem-malko Можно. Сегодня после работы начну :)
@artem-malko перенёс на "может-быть когда-нибудь" ... :( Сильно загружен на эту неделю.
@jt3k без проблем)
@jt3k Без jade-inheritance у меня перекомпиляция занимает около 2х минут :)
Не ради рекламы, а саппорта:
Я как-то рассматривал описанную вами проблему инкрементальной компиляции (статья) и недавно, начиная пересматривать свой workflow-проект (кит, набор или как там сейчас модно?), поставил себе задачу улучшить описанный в статье подход.
Суть почти полностью повторяет jade-inheritance
, но решает проблему с меньшими потерями в производительности, так как используется:
jade-inheritance
используется парсер, который строит дерево (28 регулярок) и только потом ищутся пути зависимостей. Представим себе файл из 100-200 строк, который парсится по всем 28 регуляркам - ужас.Всё это я оформил в виде дочернего пакета для своего workflow-проекта. Но задача там решается на более низком уровне, поэтому в дополнение требуется минимум gulp-filter
и сравнительно большое количество JS-кода (я думаю это не проблема, особенно почитав ваши таски). А ещё я не знаю как себя ведёт Gulp@3.x.x с Promise в тасках.
Я не вижу проблем добавить в свой пакет поддержу glob-паттернов для описанного в шапке случая. Так как я не часто пользуюсь примесями, то при желании с вашей стороны - добавлю поддержку Jade и Glob-паттернов в именах зависимостей.
А инхеританце по моим прикидкам не сильно ускоряет процесс перекомпиляции.
Когда я верстал интернет-магазин – мой текущий вариант решения проблемы снизил бы время компиляции с 4 секунд до 200-300 миллисекунд (специально перепроверил). Про jade-inheritance
ничего сказать не могу и уточню, что было 18 страниц (подробнее в начале статьи).
@mrmlnc спасибо за инфу, было бы круто, если бы Jade и glob поддерживался) Попробуем заюзать обязательно!
@artem-malko, в версии 1.0.0-beta.1 добавил поддержку Jade (options.jade = true
) и glob-паттернов. Пример:
content/a.jade
- include b.jade
content/b.jade
- пустойcontent/dir/a.jade
- include ../b
index.jade
- include ./content/**/*
index2.jade
- include ./content/*
result.getDependencies('templates/index')
[
'templates/content/**/*.jade',
'templates/content/a.jade',
'templates/content/b.jade',
'templates/content/dir/a.jade',
'templates/index.jade'
]
result.getDependencies('templates/index2')
[
'templates/content/*.jade',
'templates/content/a.jade',
'templates/content/b.jade',
'templates/index2.jade'
]
Если не найду проблем, то на этой неделе выпущу 1.0.0
.
@mrmlnc супер! Ждем тогда и попробуем внедрить и потестить тоже. Спасибо большое
@artem-malko, опубликовал версию 1.0.0, так как не смог найти проблемные места на своих проектах. Возможно, что-то проявится при интеграции у вас, если решитесь :cat:
P.S.: перечитал документацию по Pug/Jade и добавил поддержку всех видов файлов для include
и фильтров. Также исправил поддержку include
и extends
из блочных комментариев.
Сейчас при создании каждого компонента нужно вручную прописывать его инклуд. Мне кажется было бы удобно подключить что-то вроде этого. Что б только один раз прописать
include ../components/**/*.jade
и забыть об этом.