Пресеты
Пресет — это набор правил для каждого инструмента, плюс зависимости для установки и ключи, которые он считает своими (managedKeys). Пресеты живут внутри самого LintSync — встроенные, либо собранные один раз интерактивно и сохранённые локально — никогда как отдельные npm-пакеты, поэтому npm update -g lintsync — это и есть способ получить обновления пресетов.
Встроенные пресеты
Сегодня их четыре, и все четыре разделяют один и тот же базовый стиль Prettier: без точек с запятой, одинарные кавычки, trailingComma: 'all', printWidth: 100, tabWidth: 2.
vue-app
ESLint (flat config + @eslint/js + eslint-plugin-vue + typescript-eslint) + Prettier + Stylelint, для Vue/Nuxt-приложений. Блоки <script lang="ts">/<script setup lang="ts"> в .vue-файлах подключены напрямую к парсеру TypeScript через vue-eslint-parser, а не через @vue/eslint-config-typescript — хелпер withVueTs() этого пакета возвращает Promise, что не укладывается в обычный массив конфига. Stylelint расширяет stylelint-config-standard-scss и stylelint-config-recommended-vue.
react-app
ESLint (flat config + @eslint/js + eslint-plugin-react + eslint-plugin-react-hooks + typescript-eslint) + Prettier + Stylelint, для React-приложений. eslint/@eslint/js здесь зафиксированы на ^9 — потому что eslint-plugin-react ещё не выпустил поддержку ESLint 10.
npm-lib
ESLint (flat config + @eslint/js + typescript-eslint) + Prettier, для библиотечных npm-пакетов без CSS — этот пресет вообще не определяет инструмент Stylelint, поэтому init никогда не предлагает его установить. Строже остальных пресетов: no-console и @typescript-eslint/no-unused-vars/no-explicit-any — ошибки, а не предупреждения, и добавлено @typescript-eslint/explicit-module-boundary-types сверху.
base
ESLint (flat config + @eslint/js + typescript-eslint) + Prettier + Stylelint (stylelint-config-standard) с мягкими, общими дефолтами, не привязанными к конкретному стеку. Это то, что использует путь «выбрать инструменты по отдельности» у интерактивного init.
Все четыре включают собственный recommended-конфиг @eslint/js наряду с recommended от typescript-eslint — recommended-конфиг typescript-eslint только отключает ту часть правил @eslint/js, которую компилятор TypeScript и так проверяет лучше, но не заменяет их, поэтому реальные правила корректности без пересечения с TS (no-fallthrough, no-empty, array-callback-return, ...) всё равно требуют присутствия @eslint/js.
Поверх этого можно собрать собственный пресет интерактивно (init → «Собрать и сохранить новый пресет» — см. Init) и сохранить его локально. С этого момента он ведёт себя ровно как встроенный: то же резолвение по --preset <name>, тот же список в выборе пресета, то же поведение манифеста/sync.
Список сохранённых пресетов
lintsync presets list — список сохранённых локально пресетов.
lintsync presets list--presets <path>
Путь к локальному хранилищу пресетов, если не дефолтный — см. Глобальный конфиг и хранилище.
--json
Машиночитаемый вывод.
Удаление сохранённого пресета
lintsync presets remove <name> удаляет сохранённый локально пресет.
lintsync presets remove my-team--presets <path>
Путь к локальному хранилищу пресетов, если не дефолтный.
--json
Машиночитаемый вывод.