-
Notifications
You must be signed in to change notification settings - Fork 0
deps
Alexej Yaroshevich edited this page Aug 11, 2016
·
9 revisions
- построение графа
- walkerом составляем список всех файлов
- передаем настройки уровней со схемами именования/вложенности (bem-config) и набор уровней для прохода (массив строк)
- получаем неупорядоченный поток объектов, описывающий файл и тенорок, к которому он относится:
{level: String, path: String, entity: BemEntityName, tech: String}
- схемы содержат алгоритм обхода уровня и влияют на то, какие файлы вернутся
- из общего потока файлов оставляем только файлы описания зависимостей (далее ФОЗ)
- из каждого ФОЗ получаем нормализованный список зависимостей
- чтение и нормализация ФОЗ происходит с помощью обработчика для нужного формата
- итоговый формат:
Array<{vertex: {entity, tech}, dependOn: {entity, tech}, ordered}>
- строим граф по всем полученным связям между сущностями используя bem-graph
- walkerом составляем список всех файлов
- работаем с графом
- получаем упорядоченный набор «тенорков» для сборки по декларации и технологии для сборки бандлов
- по нему получаем упорядоченный набор файлов сортированный в соответствии с уровнями переопределения
- передаем всё в руки пользователя
- Читаем и эвалим файл в JS-объект в формате deps.js
- Валидируем формат (можно отключить)
- Нормализуем синтаксис
- Делаем из дерева неупорядоченный плоский список
- Нормализация деклараций (раскрываем маски тенорков)
- Наполняем контекстом узла
- Добавление в плоский список
- Формируем список зависимостей в итоговом формате
- Наполняем контекстом файла
NB: ФОЗ (файл описания зависимостей) — сущность файловой системы (файл или папка), содержащая информацию о зависимостях. NB: noDeps RIP.