Diplodoc v5.0: Новый уровень производительности
Основные улучшения
Оптимизация производительности
- Ускорение работы CLI-инструментов (базовое ускорение в 3 раза)
- Многопоточная обработка документов с ускорением до 10 раз на многоядерных системах
- Кэширование и оптимизация загрузки ресурсов
- Оптимизированная обработка больших проектов
Сравнения со старой версией:

Работа над улучшением производительности велась с версии 4.39. Достигнуто базовое ускорение в три раза за счет оптимизации алгоритмов обработки документов, улучшения кэширования и оптимизированного использования ресурсов. Параллельная обработка документов дополнительно ускоряет сборку в зависимости от числа ядер в системе. При работе с большими проектами на многоядерных серверах наблюдается ускорение в 10 раз.
Система обрабатывает документацию из более чем 50 тысяч статей, включая отдельные статьи, содержащие более 10 МБ текста и разметки.
Extension API и система хуков
- Система расширений для разработчиков с полной поддержкой TypeScript
- Встроенная система хуков для расширения функциональности на различных этапах
- Модульный дизайн для создания независимых, переиспользуемых расширений
- Документированный API для создания плагинов и интеграций
- Примеры интеграции с популярными инструментами
- Система управления жизненным циклом расширений
Разработано несколько расширений на новой системе, которые можно использовать в качестве примеров для создания собственных расширений:
-
GenericIncluder - расширение для автоматической генерации оглавления (TOC). Анализирует файловую систему, находит Markdown-файлы и автоматически создает структуру оглавления на основе их расположения и содержимого. При формировании оглавления учитывает заголовок файла и его вес, указанные в frontmatter.
-
GithubVcsConnector - расширение для сбора информации о контрибьюторах и авторах статей из GitHub. Собирает метаданные о коммитах, авторах и контрибьюторах и отображает их в интерфейсе документации.
-
AlgoliaSearch - интеграция с Algolia для полнотекстового поиска. Индексирует контент документации в Algolia, настраивает поисковые подсказки и фильтры. Выполняет поиск по документации с поддержкой различных языков.
-
LocalSearch - расширение для локального поиска по документации с использованием библиотеки lunr.js. Создает поисковый индекс на стороне клиента. Поддерживает нечеткий поиск, поиск по фразам и ранжирование результатов по релевантности. Для проектов, требующих работы в офлайн-режиме или с ограничениями по конфиденциальности данных.
Эти расширения демонстрируют различные возможности новой системы расширений и могут служить отправной точкой для разработки собственных плагинов. Каждое из них реализует свой набор хуков и использует различные аспекты API расширений.
Улучшенная система оглавления (TOC)
- Расширенная поддержка шаблонизации переменными для полей
hrefиlabel - Автоматическое извлечение заголовков из файлов для поля
name - Улучшенная обработка includes в TOC с более аккуратной работой с файловой системой
В системе оглавления (TOC) расширена поддержка шаблонизации переменными для динамического формирования ссылок и меток. Поле name автоматически извлекает заголовок из файла, на который ссылается элемент оглавления. Улучшена обработка includes в TOC при работе с файловой системой.
Система редиректов
По умолчанию реализована простая система редиректов с файла на файл, которая работает на базе браузерных редиректов. Для более сложных сценариев, когда требуется генерация конфигураций для nginx или других прокси-серверов, в систему добавлен набор хуков для удобной работы с редиректами. Функциональность работы с редиректами может быть расширена через внешние расширения на основе Extension API.
Улучшенная система конфигурации
Систематизирована система именования параметров запуска:
--disableLiquid→--no-template--lintDisabled→--no-lint--needToSanitizeHtml false→--no-sanitize-html
Такая систематизация делает интерфейс командной строки более понятным и предсказуемым для пользователей.
Синхронизирована настройка сборки проекта через параметры командной строки и через файл конфигурации. Теперь для всех основных параметров в файле конфигурации есть соответствующий параметр командной строки. Добавлены новые параметры:
--langs- управление языками документации--search- настройка параметров поиска--changelogs- управление списком изменений--mtimes- настройка временных меток
Подробнее в обновленном разделе Настройки YFM-проекта
Другие технические улучшения
- Разводящие страницы поддерживают frontmatter для настройки метаданных и поведения
- Использование Latex и Mermaid синтаксиса доступно по умолчанию
- Устранены уязвимости, позволявшие обратиться к файлам за пределами проекта