Skip to content

Latest commit

 

History

History
132 lines (93 loc) · 9.04 KB

data_compiling.ru.md

File metadata and controls

132 lines (93 loc) · 9.04 KB

Описание сборки данных

Запуск сборки данных осущствляется командой:

  • Для development: node bin/data.js development [-v {0|-n|latest|previous|snapshot_dd:mm:yyyy-hh:mm:ss}]
  • Для testing: node bin/data.js testing [-v {0|-n|latest|previous|snapshot_dd:mm:yyyy-hh:mm:ss}]
  • Для production: node bin/data.js production -v {0|-n|latest|previous|snapshot_dd:mm:yyyy-hh:mm:ss}

-v - определяет, то какая версия собранных данных будет активной. Для production окружения этот параметр является обязательным.

Если данный параметр не указан, то сборка данных осуществляется полностью, и собранный snapshot становится активным для данного окружения.

Если параметр -v указан, то сборка будет пропущена, а snapshot соответствующий значению, этого параметра станет активным для данного окружения.

Для dev режима это означает, что файлы из папки backups/snapshot_{dd:mm:yyyy-hh:mm:ss} будут скопированы в корень папки backups.

Для режимов testing и production файлы из папки соответствующего snapshot-а будут скопированы в папки названия которых совпадают с выбранным окружением

{config model directory}/snapshot_{dd:mm:yyyy-hh:mm:ss}/* --> {config model directory}/{testing}
{config model directory}/snapshot_{dd:mm:yyyy-hh:mm:ss}/* --> {config model directory}/{production}

Значениями параметра -v могут быть:

  • Полное название snapshot-а: 'snapshot_{dd:mm:yyyy-hh:mm:ss}'
  • Количество собранных snapshot-ов между целевым snapshot-ом и последней версией собранных данных. Например, чтобы откатиться на 3 версии собранных данных назад, необходимо запустить сборку данных с параметром -v -3.
  • 0 или 'latest' - установить активным последний собранный snapshot.
  • -1 или 'previous' - установить активным предыдущий собранный snapshot.

Этапы сборки данных

Сборка snapshot-а проходит в несколько четко выраженных этапов:

Подключение модели данных

На этом этапе происхоходит подключение модуля model/index.js и соответственно всех подключенных к model/index.js модулей. Такое подключение возвращает обхект, содержащий 'скелетную' информацию описывающую структуру сайта.

Анализ модели данных

Происходит анализ поключенной модели и определение тех полей, которые не были указаны явно, значениями по умолчанию или вычисляемыми знаениями.

Анализ и сбор мета-информации, загрузка *.md ресурсов

На этом этапе происходит анализ полей source для каждого узла. Здесь происходит сборка массивов ключенй авторов и тегов для построения соответствующих страниц. Кроме того, происходит парсинг ссылок на *.md ресурсы, загрузка содержимого *.md файлов и построение ссылок на issues репозитория из которого был загружен файл, а также ссылку на редактирование загруженного контента c помощью сервиса prose.io.

Примечание №1

Если *.md файл был загружен из ветки репозитория, то ссылка на редактирование prose.io ведет на редактирование файла из указанной ветки.

Если *.md файл был загружен из тега репозитория, то ссылка на редактирование файла включает в себя дефолтную ветку репозитория.

Примечание №2

Если дата обновления editDate не была указано явно, то дата обновления документа вычисляется как дата последнего коммита загруженного *.md файла.

Загрузка информации по авторам и переводчикам

На этом шаге происходит загрузка *.json файла, содержащего информацию по авторам и переводчикам. Путь к этому файлу указывается как ссылка на файл на github так как она отображается в браузере при открытии этого файла на github. Сейчас в демонстрационных целях, данный файл раположен прямо в репозитории bem-site-engine по пути docs/people/people.json и путь к этому файлу прописан в конфигурации bem-site-engine:

{
    ...
    "github": {
        ...,
        "people": "https://github.com/bem/bem-site-engine/blob/dev/docs/people/people.json"
    },
    ...
}

Генерация динамических узлов модели для авторов, переводчиков и тегов

К узлам модели, содержащим поля dynamic в автоматическом режиме достраиваются узлы, соответствующие определенным авторам, переводичкам и тегам, информация о которых была собрана на шаге 'Анализ и сбор мета-информации, загрузка *.md ресурсов', а данные по авторам и переводчикам подгружается из того файла, который был загружен на предыдущем шаге сборки.

Загрузка данных по библиотекам блоков и генерация динамических узлов модели для библиотеков блоков.

Переопределение ссылок

Генерация файла sitemap.xml

Имея собранные данные о всех маршрутах приложения, и указанный в конфиге приложения хост (или хосты) сайта

{
    ...,
    "hosts": {
        "en": "http://you-site-host-en",
        "ru": "http://you-site-host-ru"
    }
}

можно построить файл sitemap.xml для индексации сайта поисковыми системами. Это и происходит на данном этапе.

Сохранение и выгрузка данных

Сформированные данные сохраняются в виде 3-х файлов:

  • data.json - собранная модель для работы сайта. Включает в себя дерево структуры сайта, инфоррмацию по тегам, авторам, и библиотекам блоков, загруженные и распарсенные *.md ресурсы, а также полную карту маршрутов для сайта.

  • marker.json - файл, который содержит хэш-сумму от собранной структуры данных data.json, а также точную дату сборки. Необходим для выполнения проверок того, что данные были изменены.

  • sitemap.xml - файл для индексирования поисковыми системами.

В зависимости от установленного в параметре -env окружения, эти 3 файла сохраняются либо локально на файловую систему в директорию backups/{snapshot_dd:mm:yyyy-hh:mm:ss} либо выгружаются на Yandex Disk в директорию {config model directory}/{snapshot_dd:mm:yyyy-hh:mm:ss}, где config model directory - это название директории на Yandex Disk установленное в конфигурации сайта.