Babel-плагин для автоматического типографирования текста.
Текст — один из основных инструментов, используемых в интерфейсах для описания действия. Помимо этого, зачастую страницы могут полностью состоять из текста в разных его проявлениях: лэндинги, разделы «О сервисе» и «Вопросы на ответы» и подобные им. Фронтенд-разработчики должны не забывать о том, какие кавычки и чёрточки и когда использовать, когда ставить неразрывный пробел, а когда нет, и так далее.
Этот Babel-плагин нужен для автоматизации подобной рутины. Он улучшает типографику текста на этапе сборки проекта.
npm install --save-dev @funboxteam/babel-plugin-typografВажно:
В секции plugins этот плагин должен быть выше остальных, обрабатывающих шаблонные строки (например, plugin-transform-template-literals), чтобы конвертирование теговых шаблонов было выполнено раньше, чем начнётся работа этих плагинов над шаблонными строки.
После установки, необходимо добавить плагин в конфигурацию Babel:
{
plugins: [
// ...
['@funboxteam/babel-plugin-typograf', {
// Замена символов происходит с учётом локали
locale: ['ru', 'en-US'],
// Конвертация символов в HTML-сущности (по умолчанию отключена)
htmlEntity: {
type: 'name', // 'name' или 'digit'
onlyInvisible: true, // Установите `true`, чтобы конвертировать только невидимые символы
},
// Здесь можно включить дополнительные правила
enableRules: [
'common/nbsp/afterNumber',
],
// А здесь отключить те, что включены по умолчанию в Typograf
disableRules: [
'common/punctuation/quote',
],
// Настройки для правил
ruleSettings: [
['common/nbsp/beforeShortLastWord', 'lengthLastWord', 8],
],
}],
]
}Для обозначения строк, которые нужно обработать, используется специальный тег:
// Исходная строка
T`Отформатированная "строка". `;
// Строка после обработки плагином
// Теговый шаблон с тегом `T` конвертируется в обычную шаблонную строку
`Отформатированная «строка».`;Для обработки текста плагин использует библиотеку Typograf.
Он ищет теговые шаблоны, помеченные тегом T:
T`"строка"`Дорабатывает типографику внутри этих шаблонов, а затем конвертирует из в обычные шаблонные строки, удаляя тег:
`«строка»`- Удаление лишних пробелов.
- Автоматическая расстановка неразрывных пробелов.
- Конвертация двойных кавычек в «ёлочки».
- Конвертация HTML-сущностей (
,«,»и т.д.) в Unicode-символы.
В Typograf есть список правил, которые включены по умолчанию.
-
ru/money/ruble
Преобразует всеруб.в₽. Рекомендуется указывать знак₽точечно во избежание рисков комплексной автозамены там, где это может не потребоваться. Например, в динамических текстах, где необходимо указывать именноруб., и которые отследить заранее практически невозможно. Или в разметке, где требуется указатьруб.в связи с тем, что знак₽корректно отображается не во всех используемых шрифтах. -
common/space/delBeforePunctuation
Удаляет пробелы перед знаками препинания. Но есть нюанс. Например, фраза «Нам нужен .Net-разработчик.» превратится в «Нам нужен.Net-разработчик.». На данный момент это решается только отключением правила, но, возможно, в будущем можно будет добавлять исключения. -
common/space/afterPunctuation
Добавляет пробелы после знаков пунктуации. Может добавить пробел в случаях, когда он не нужен. Например, фразаразделитель запятая «,»превратится вразделитель запятая «, », а из-за этого неправильно сработает правилоcommon/punctuation/quote, и в результате получитсяразделитель запятая «, «.