@diplodoc/transform

中文文档
4.78.13发布于 2026/11/09MITTypeScriptCommonJS构建来源已验证近 30 天下载 6万

A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML

原始使用文档
文档目录10 节
  1. Установка {#install}
  2. Использование {#use}
  3. Поле result
  4. Поле logs
  5. Пример вызова функции
  6. Пользовательский HTML-санитайзер
  7. License
  8. Публичные CSS-переменные
  9. Контрибуции
  10. Тесты

english | русский


NPM version Quality Gate Status Coverage Maintainability Rating Reliability Rating Security Rating

Diplodoc transform

Пакет для трансформации Yandex Flavored Markdown в HTML.

Используйте его в своем коде для работы с текстом во время выполнения программы. Например, чтобы отображать пользовательский контент.

Установка {#install}

  1. Установите пакет:

    npm i @diplodoc/transform
    
  2. Подключите пакет в своем коде, используя функцию require() или import():

    const transform = require('@diplodoc/transform');
    
  3. Для корректного отображения подключите в проект CSS-стили и клиентские скрипты:

    @import '~@diplodoc/transform/dist/css/yfm.css';
    
    import '@diplodoc/transform/dist/js/yfm';
    

Использование {#use}

Пакет предоставляет функцию transform():

  • входные данные — строка с YFM и настройки;
  • возвращаемое значение — объект с полями result и logs.

Поле result

result — объект результата, содержит поля:

  • html — строка с HTML.
  • meta — метаданные из переданного контента.
  • title — заголовок документа. Возвращается, если заданы настройки extractTitle = true или needTitle = true.
  • headings — список заголовков документа.

Поле logs

logs — информация о процессе трансформации, включает массивы:

  • error — ошибки.
  • warn — предупреждения.
  • info — дополнительная информация.

Пример вызова функции

const fs = require('fs');
const transform = require('@diplodoc/transform');

const content = fs.readFileSync(filePath, 'utf');
const vars = {user: {name: 'Alice'}};

const {
  result: {html, meta, title, headings},
  logs,
} = transform(content, {vars});

Пользовательский HTML-санитайзер

Вы можете заменить стандартный HTML-санитайзер своей собственной реализацией, передав функцию sanitize в опциях:

const customSanitizer = (html, options) => {
  // Ваша логика санитизации
  return sanitizedHtml;
};

const {result} = transform(content, {
  sanitize: customSanitizer,
  // Другие опции...
});

Это полезно, когда вам нужно реализовать специфические правила санитизации или интегрироваться с другой библиотекой санитизации. Функция санитайзера должна принимать HTML-строку в качестве входных данных и возвращать санитизированный HTML.

License

MIT

Публичные CSS-переменные

common

  • --yfm-color-text
  • --yfm-color-link
  • --yfm-color-base
  • --yfm-color-link-hover
  • --yfm-color-table
  • --yfm-color-table-row-background
  • --yfm-color-border
  • --yfm-color-accent
  • --yfm-tab-size
  • --yfm-text-block-margin-block
  • --yfm-text-block-margin-inline
  • --yfm-font-size
  • --yfm-font-line-height
  • --yfm-font-size-h1
  • --yfm-font-line-height-h1
  • --yfm-font-size-h2
  • --yfm-font-line-height-h2
  • --yfm-font-size-h3
  • --yfm-font-line-height-h3
  • --yfm-font-size-h4
  • --yfm-font-line-height-h4
  • --yfm-font-size-h5
  • --yfm-font-line-height-h5
  • --yfm-font-size-h6
  • --yfm-font-line-height-h6
  • --yfm-hr-height
  • --yfm-hr-margin

code

  • --yfm-color-inline-code
  • --yfm-color-inline-code-background
  • --yfm-color-code-background
  • --yfm-tab-size-code

hightlight

  • --yfm-color-hljs-background
  • --yfm-color-hljs-subst
  • --yfm-color-hljs-comment
  • --yfm-color-hljs-deletion
  • --yfm-color-hljs-section
  • --yfm-color-hljs-pseudo
  • --yfm-color-hljs-literal
  • --yfm-color-hljs-addition
  • --yfm-color-hljs-meta
  • --yfm-color-hljs-meta-string

note

  • --yfm-color-note-tip
  • --yfm-color-note-tip-background
  • --yfm-color-note-warning
  • --yfm-color-note-warning-background
  • --yfm-color-note-important-background
  • --yfm-color-note-info
  • --yfm-color-note-info-background

term

  • --yfm-color-term-title
  • --yfm-color-term-title-hover
  • --yfm-color-term-dfn-background
  • --yfm-color-term-dfn-shadow
  • --yfm-color-term-dfn-pseudo-shadow

modal

  • --yfm-color-modal-content
  • --yfm-color-modal-actions-hover
  • --yfm-color-modal-wide-content
  • --yfm-color-modal-wide-content-overlay

file

  • --yfm-file-icon
  • --yfm-file-icon-color

list

  • --yfm-list-item-margin-block
  • --yfm-list-text-margin-block
  • --yfm-list-text-only-margin-block
  • --yfm-list-text-last-margin-block

Контрибуции

Тесты

В пакете представлены unit-тесты на базе Jest и визуальные e2e-тесты на базе Playwright. Playwright-тесты расположены в подпакете e2e.

Playwright: prerequisites

Для того, чтобы обеспечить минимальное количество внешних факторов, которые могут повлиять на выполнение e2e-тестов, рекомендуется запускать локально Playwright-тесты в Docker-контейнере с помощью скрипта пакета test:playwright. Этот скрипт настроит необходимое окружение в Docker и установит все зависимости для него.

$ npm run test:playwright

Подразумевается, что у вас установлен Docker CLI и Docker Engine.

Для того, чтобы использовать UI-режим Playwright, используйте скрипт playwright:docker:ui (в подпакете e2e):

$ cd e2e
$ npm run playwright:docker:ui
Пользователям macOS: не хотите/не имеете возможность использовать Docker Desktop?

Благодаря относительно недавним изменениям лицензии, использование Docker Desktop в коммерческих условиях больше не является бесплатным. Используйте Lima или одну из обёрток, таких как Colima или Rancher Desktop.

Если при настройке вы выбрали имя инстанса не docker, можете передать нужное с помощью переменной LIMA_INSTANCE при обращении к скрипту playwright:docker/test:playwright:

$ LIMA_INSTANCE=instancename npm run test:playwright

Эта информация необходима скрипту, чтобы корректно настроить переменную окружения DOCKER_HOST.

版本与发布记录

@diplodoc/transform 共发布 250 个版本,首次发布于 2023/09/22;过去 12 个月发布了 82 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
4.78.13latest2026/11/093 天前
4.78.122026/10/2814 天前
4.78.112026/10/2616 天前
4.78.102026/10/2616 天前
4.78.92026/10/1726 天前
4.78.82026/10/1626 天前

其他发布通道:develop → 4.27.1-beta2,beta → 4.29.0-beta3,development → 4.35.0-beta6,false → 0.0.0-rc-ways-to-interface-with-collect-202412111442,improve-recognise-terms → 0.0.0-rc-improve-recognise-terms-22131507604,merge-includes-step0 → 0.0.0-rc-merge-includes-step0-23293521175。

关于 @diplodoc/transform 的常见问题

@diplodoc/transform 是什么?

A simple transformer of text in YFM (Yandex Flavored Markdown) to HTML

如何安装 @diplodoc/transform?

在项目目录运行 npm install @diplodoc/transform,或使用 pnpm add / yarn add / bun add。

@diplodoc/transform 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@diplodoc/transform 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@diplodoc/transform 可以商用吗?

@diplodoc/transform 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@diplodoc/transform 的下载量有多少?

根据 npm 官方下载统计,@diplodoc/transform 在 2026/10/13 – 2026/11/11 这 30 天内被下载 60,132 次,日均约 2,004 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@diplodoc/transform 还在维护吗?

最新版本 4.78.13 发布于 2026/11/09(3 天前);至今共发布 250 个版本,其中过去 12 个月发布了 82 个;首次发布于 2023/09/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。