Локальная разработка
Цель
Обеспечить единые правила локальной разработки и воспроизводимость окружения, чтобы:
- код был консистентным и предсказуемым
- проверки работали одинаково в IDE и CLI
- расхождения локально/CI не появлялись из-за инструментов
Инструменты качества кода (lint + format)
MUST
- В каждом проекте настроены:
- ESLint (статический анализ)
- Stylelint (если есть CSS/SCSS/CSS Modules)
- Prettier (форматирование)
- Проверка типов через TypeScript (если используется)
- Инструменты запускаются:
- из CLI
- из IDE (через плагины и "fix on save")
- через git-хуки (pre-commit / pre-push)
- в CI-пайплайне
- Код, нарушающий стандарты или форматирование, не допускается
SHOULD
- Настроить lint-staged для ускорения pre-commit хуков
FORBIDDEN
- Форматирование только через IDE
- Запуск линтера или prettier напрямую, без package.json scripts
Пример: package.json scripts (эталон)
✅ Хорошо
{
"scripts": {
"deps:check": "depcruise --config ./.dependency-cruiser.js --no-ignore-known",
"fsd:deps:check": "node node_modules/fsd-cruise/bin.js",
"lint:eslint": "eslint",
"lint:eslint:fix": "eslint --fix",
"lint:eslint:project": "eslint --quiet .",
"lint:eslint:project:fix": "eslint . --fix",
"lint:prettier": "prettier --check '**/*.{ts,tsx}'",
"lint:prettier:fix": "prettier --write '**/*.{ts,tsx}'",
"lint:stylelint": "stylelint '**/*.{css,scss}'",
"lint:stylelint:fix": "stylelint '**/*.{css,scss}' --fix",
"lint:typescript": "tsc --noEmit -p tsconfig.json",
"lint:typescript:fix": "tsc --noEmit -p tsconfig.json --fix",
"lint:ci": "pnpm lint:typescript && pnpm lint:eslint:project"
}
}
❌ Плохо
- нет lint/format/typecheck скриптов
- форматирование только через IDE, а в CLI ничего нет