Skip to content

Сортировка

В Oxfmt есть сортировка импортов, классов Tailwind и полей package.json.

Полное описание опций см. в справочнике файла конфигурации.

Сортировка импортов

На основе eslint-plugin-perfectionist/sort-imports.

По умолчанию выключено.

Пример конфигурации

Тот же порядок, что по умолчанию у eslint-plugin-perfectionist/sort-imports.

json
{
  "sortImports": {
    "groups": [
      "type-import",
      ["value-builtin", "value-external"],
      "type-internal",
      "value-internal",
      ["type-parent", "type-sibling", "type-index"],
      ["value-parent", "value-sibling", "value-index"],
      "unknown"
    ]
  }
}
ts
import { defineConfig } from "oxfmt";

export default defineConfig({
  sortImports: {
    groups: [
      "type-import",
      ["value-builtin", "value-external"],
      "type-internal",
      "value-internal",
      ["type-parent", "type-sibling", "type-index"],
      ["value-parent", "value-sibling", "value-index"],
      "unknown",
    ],
  },
});

Используйте "newlinesBetween": false на верхнем уровне, чтобы отключить переносы между группами, затем { "newlinesBetween": true } внутри groups, чтобы вставить перенос в нужном месте.

json
{
  "sortImports": {
    "newlinesBetween": false,
    "groups": [
      ["value-builtin", "value-external"],
      ["value-internal", "value-parent", "value-sibling", "value-index"],
      { "newlinesBetween": true },
      "type-import",
      "unknown"
    ]
  }
}
ts
import { defineConfig } from "oxfmt";

export default defineConfig({
  sortImports: {
    newlinesBetween: false,
    groups: [
      ["value-builtin", "value-external"],
      ["value-internal", "value-parent", "value-sibling", "value-index"],
      { newlinesBetween: true },
      "type-import",
      "unknown",
    ],
  },
});

Через customGroups задаются собственные группы для сопоставления импортов. У каждой пользовательской группы есть groupName, на который можно ссылаться в groups. В elementNamePattern задаются glob-шаблоны для источников импорта.

json
{
  "sortImports": {
    "customGroups": [
      {
        "groupName": "react-libs",
        "elementNamePattern": ["react", "react-**"]
      }
    ],
    "groups": [
      "react-libs",
      ["value-builtin", "value-external"],
      "value-internal",
      ["value-parent", "value-sibling", "value-index"],
      "unknown"
    ]
  }
}
ts
import { defineConfig } from "oxfmt";

export default defineConfig({
  sortImports: {
    customGroups: [
      {
        groupName: "react-libs",
        elementNamePattern: ["react", "react-**"],
      },
    ],
    groups: [
      "react-libs",
      ["value-builtin", "value-external"],
      "value-internal",
      ["value-parent", "value-sibling", "value-index"],
      "unknown",
    ],
  },
});

Сортировка классов Tailwind CSS

Сортирует утилитарные классы Tailwind.

На основе prettier-plugin-tailwindcss.

По умолчанию выключено.

Пример конфигурации

json
{
  "sortTailwindcss": {
    "stylesheet": "./path/to/stylesheet.css",
    "functions": ["clsx", "cn"],
    "preserveWhitespace": true
  }
}
ts
import { defineConfig } from "oxfmt";

export default defineConfig({
  sortTailwindcss: {
    stylesheet: "./path/to/stylesheet.css",
    functions: ["clsx", "cn"],
    preserveWhitespace: true,
  },
});

Шаблоны regex для attributes и functions не поддерживаются.

Сортировка полей package.json

Сортирует ключи в package.json по выбранному порядку.

Подробности см. в описании порядка полей.

По умолчанию включено.

Пример конфигурации

Отключить:

json
{
  "sortPackageJson": false
}
ts
import { defineConfig } from "oxfmt";

export default defineConfig({
  sortPackageJson: false,
});

Сортировать scripts по алфавиту:

json
{
  "sortPackageJson": {
    "sortScripts": true
  }
}
ts
import { defineConfig } from "oxfmt";

export default defineConfig({
  sortPackageJson: {
    sortScripts: true,
  },
});