@37bytes/code-style
v0.0.1
Published
Unified linting and formatting configs for 37bytes projects
Readme
@37bytes/code-style
0.0.1-dev: пакет в активной разработке. API может меняться без предупреждения.
Точка входа для инструментов поддержки качества проектов 37bytes
Установка
npm install @37bytes/code-style --save-devОбязательные peer-зависимости (версии фиксированы):
npm install [email protected] [email protected] [email protected] --save-devОпционально:
npm install [email protected] --save-dev # CSS/SCSS линтинг
npm install [email protected] --save-dev # гибридный режим OxLint
npm install @biomejs/[email protected] --save-dev # гибридный режим BiomeESLint
Три конфига по типу приложения: spa, nextjs, nodejs.
// eslint.config.js
import { spa } from '@37bytes/code-style/eslint';
export default [...spa];// Next.js
import { nextjs } from '@37bytes/code-style/eslint';
export default [...nextjs];// Node.js
import { nodejs } from '@37bytes/code-style/eslint';
export default [...nodejs];Дополнительные слои
Добавляются через spread после основного конфига:
import { spa, testingConfig, testingReactConfig, storybookConfig } from '@37bytes/code-style/eslint';
export default [...spa, ...testingConfig, ...testingReactConfig, ...storybookConfig];| Слой | Описание |
| --------------------- | -------------------------------------- |
| testingConfig | Vitest + смягченные правила для тестов |
| testingReactConfig | Testing Library + jest-dom |
| storybookConfig | Правила Storybook |
| reactCompilerConfig | Правила React Compiler |
| fsdConfig() | Ограничения архитектуры FSD |
Perfectionist (опциональная автосортировка)
import { perfectionist } from '@37bytes/code-style/eslint';
export default [
...perfectionist.spa
// или perfectionist.nextjs, perfectionist.nodejs
];Кастомные плагины @37bytes
| Правило | Описание |
| ------------------------- | ---------------------------------------------------- |
| @37bytes/no-storage | Запрет прямого доступа к localStorage/sessionStorage |
| @37bytes/no-arrow-props | Запрет стрелочных функций в JSX-пропсах |
| @37bytes/boolean-naming | Обязательные префиксы булеанов (is/has/should/...) |
| @37bytes/enum-pattern | Запрет enum, as const + UPPER_CASE |
OxLint (опционально)
Готовый конфиг для гибридного режима OxLint + ESLint:
import { config } from '@37bytes/code-style/oxlint';Подробнее: docs/oxlint.md.
Biome (опционально)
Готовый конфиг для гибридного режима Biome + ESLint:
import { config } from '@37bytes/code-style/biome';Stylelint (опционально)
Конфиг для CSS/SCSS модулей: порядок свойств, lowerCamelCase селекторы, запрет type-селекторов, обязательные CSS-переменные для цветов/z-index/шрифтов.
npm install [email protected] --save-dev// .stylelintrc.js
import { config } from '@37bytes/code-style/stylelint';
export default config;Основано на stylelint-config-standard-scss. Включает плагины stylelint-order и stylelint-declaration-strict-value.
Prettier
// prettier.config.js
import { config } from '@37bytes/code-style/prettier';
export default config;4 пробела, одинарные кавычки, без trailing commas, точки с запятой, 120 символов.
TypeScript
{
"extends": "@37bytes/code-style/typescript/react"
}| Конфиг | Описание |
| ------------------ | --------------------------------- |
| typescript/base | Строгий базовый конфиг (ES2023) |
| typescript/react | React-приложение (DOM types, JSX) |
| typescript/node | Node.js (NodeNext modules) |
EditorConfig
cp node_modules/@37bytes/code-style/editorconfig/.editorconfig .Naming Conventions
Лицензия
ISC
