CSS / SCSS · Prettier
Как задать собственный порядок CSS-свойств
Автор: Grundy · Проверено: 6 октября 2026
Алфавитная сортировка — отправная точка. Если команда сначала читает позиционирование, затем раскладку и типографику, этот порядок можно закрепить в форматтере. Соберем конфигурацию с точным порядком свойств раскладки и алфавитным порядком свойств шрифта.
1. Определите группы
Группа layout выбирает объявления из списка oneOf. При order: exact этот список задает и порядок внутри группы: position, display, width, padding, gap. Группа typography выбирает имена объявлений, начинающиеся с font, и сортирует их по алфавиту. Условие type: decl ограничивает обе группы объявлениями CSS.
{
"layout": {
"type": "decl",
"oneOf": [
"position",
"display",
"width",
"padding",
"gap"
],
"order": "exact"
},
"typography": {
"type": "decl",
"startsWith": "font",
"order": "alphabetical"
}
}2. Запишите группы в конфигурацию
Добавьте параметры в существующий .prettierrc.json после установки Prettier и плагина. В плагине 0.2.2 grundyScssSorterGroups принимает строку с JSON, а не вложенный объект. Поэтому внутренние кавычки в примере экранированы. Примеры проверены с Prettier 3.9.6.
{
"plugins": [
"prettier-grundy-scss-order"
],
"grundyScssSorterGroups": "{\"layout\":{\"type\":\"decl\",\"oneOf\":[\"position\",\"display\",\"width\",\"padding\",\"gap\"],\"order\":\"exact\"},\"typography\":{\"type\":\"decl\",\"startsWith\":\"font\",\"order\":\"alphabetical\"}}",
"grundyScssSorterGroupsOrder": [
"@use",
"@extend",
"--variable",
"$variable",
"@if",
"layout",
"typography",
"decl",
"@include",
"@mixin",
"rule"
]
}3. Поставьте специальные группы перед decl
Форматтер использует первую подходящую группу из grundyScssSorterGroupsOrder. Свойство display подходит и под layout, и под общую группу decl. Если layout стоит раньше, она получает приоритет. Свойства, которые не попали в пользовательские группы, например color, доходят до decl и сортируются по алфавиту. Сохраните группы SCSS в списке, чтобы у переменных, подключений миксинов и вложенных правил было явное место.
4. Запустите и сравните
Сохраните исходный пример ниже в styles/card.scss и выполните команды. Для файла .css тоже оставьте --parser scss: плагин выполняет сортировку через этот парсер. Порядок раскладки в результате намеренно отличается от алфавитного, а font-size располагается перед font-weight.
npx prettier styles/card.scss --parser scss --write
npx prettier styles/card.scss --parser scss --checkДо: styles/card.scss
.card {
color: #222;
font-weight: 600;
gap: 12px;
padding: 16px;
width: 320px;
font-size: 16px;
display: grid;
position: relative;
}После форматирования
.card {
position: relative;
display: grid;
width: 320px;
padding: 16px;
gap: 12px;
font-size: 16px;
font-weight: 600;
color: #222;
}5. Расширяйте соглашение постепенно
Добавьте свойство в layout.oneOf, чтобы выбрать его позицию, или создайте еще одну группу и поставьте ее перед decl. Сам по себе oneOf выбирает свойства, но без order: exact не задает их внутренний порядок. Условие startsWith: font не включает line-height и color. Если они нужны в группе типографики, используйте явный список oneOf. Избегайте пересечения пользовательских групп, если их приоритет не выбран осознанно.
6. Проверьте поведение перед внедрением
Просмотрите diff и затронутую страницу. Сокращенные и отдельные свойства, повторные объявления и подключения SCSS-миксинов могут зависеть от исходного порядка. Успешный --check подтверждает форматирование, а не сохранение внешнего вида. Если CLI отклоняет grundyScssSorterGroups, проверьте, что значение — строка с корректным JSON. Если группа игнорируется, проверьте ее имя в grundyScssSorterGroupsOrder.