@astral/biomejs-config
v1.12.0
Published
!!! Совместим только с версией biomejs 2.x.x
Readme
@astral/biomejs-config
Совместимость с версией biomejs
!!! Совместим только с версией biomejs 2.x.x
Установка
npm install @biomejs/[email protected] @astral/biomejs-config --save-devДоступные конфиги
@astral/biomejs-config/web- конфиг для frontend приложений@astral/biomejs-config/node- конфиг для nodejs приложений
Дополнительная функциональность конфигов
- Совместимость с @astral/eslint-config-react-ts
- Игнорирует файлы и директории, указанные в
.gitignore - Настроена и включена сортировка и группировка импортов
- Разрешает импорт пакета из devDeps в файлах конфигураций и тестах
- Разрешает использование
console.logв файлах конфигураций
biome.web.json
- Разрешает использовать commonjs и
console.logв файлах конфигураций - Игнорирует
.templatesдиректорию - Запрещает нарушение зависимостей архитектурных слоев (например, импорт из
apiизshared)- !!! Работает только для alias, начинающихся с
#(#shared,#api). Правило style guide
- !!! Работает только для alias, начинающихся с
- Запрещает прямое использование пакетов вне
sharedслоя:- Все пакеты с префиксом
@astral @mui/materialremedadayjsreact-hook-form@tanstack/react-virtual
- Все пакеты с префиксом
Настройка
Базовая настройка
Создать biome.json в корне
biome.json
{
"$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
"extends": ["@astral/biomejs-config/web"]
}Включить автофикс при сохранении в IDE
Установить в IDE biome плагин.
VSCode
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.biome": "explicit",
"source.organizeImports.biome": "explicit"
}
}WebStorm
После установки плагина перейти в Settings -> Languages & Frameworks -> Biome, включить все чекбоксы для форматирования при сохранении файла.
!!! Для корректной работы необходимо установить последнюю версию плагина >= 1.7.2, обратить внимание на совместимость с версией WebStorm
Версии плагина и совместимость с WS.
Monorepo
Ручная настройка запрета импортов между архитектурными слоями
Migration Guide: ESLint -> Biome
Заменить внутренние alias, с
@на#(пример:#shared,#api). Правило style guideУдалить Eslint зависимости, отключить Eslint в IDE. Удалить Prettier, если не используется Stylelint.
Установить biome и @astral/biomejs-config
npm install @biomejs/[email protected] @astral/biomejs-config --save-dev- Добавить
biome.jsonв корень проекта. Пример настройки в монорепозитории.
biome.json
{
"$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
"extends": ["@astral/biomejs-config/web"]
}Установить плагин Biome для IDE и включить автофикс при сохранении (см. инструкцию выше)
Заменить eslint-disable-next-line на соответствующий biome-ignore с указанием причины.
{
eslint-disable-next-line -> biome-ignore
@typescript-eslint/no-explicit-any -> lint/suspicious/noExplicitAny: Причина
import/no-extraneous-dependencies -> lint/correctness/noUndeclaredDependencies: Причина
@typescript-eslint/no-throw-literal -> lint/style/noParameterAssign: Причина
@typescript-eslint/no-unused-vars -> lint/correctness/noUnusedVariables: Причина
@typescript-eslint/no-shadow -> lint/suspicious/noShadowRestrictedNames: Причина
no-param-reassign -> lint/style/noParameterAssign: Причина
no-console -> lint/suspicious/noConsole: Причина
@typescript-eslint/no-useless-constructor -> lint/complexity/noUselessConstructor: Причина
@typescript-eslint/no-use-before-define -> lint/correctness/noInvalidUseBeforeDeclaration: Причина
}Подробное сопоставление правил можно найти здесь https://biomejs.dev/linter/javascript/sources/#eslint
- Заменить Eslint скрипты в package.json на biome
{
"scripts": {
"lint": "biome check --write --diagnostic-level=error",
"lint:all": "biome check --write",
"lint:ci": "biome check --diagnostic-level=error"
}
}Запустить скрипт
lint:all. Он выполнит safe fix ошибок.Выполнить unsafe фикс, если необходимо
biome check --write --unsafeОставшиеся ошибки необходимо исправить руками. (Совет: если ошибок много - временно отключите соответствующие правила в локальном biome.json, затем включайте по одному для исправления)
Поменять скрипт в CI на "lint:ci"
