44 lines
3.4 KiB
Markdown
44 lines
3.4 KiB
Markdown
# Dependencies
|
|
|
|
## Перед добавлением
|
|
|
|
1. Найди аналог по назначению и реализации в affected repo.
|
|
2. Проверь его direct dependencies, текущий stack и native/stdlib API.
|
|
3. Определи масштаб: один простой случай или повторяющаяся техническая задача.
|
|
4. Используй существующее решение, если оно полностью покрывает поведение.
|
|
Новый пакет оправдан меньшей общей сложностью, а не сокращением одной строки.
|
|
|
|
Повтор non-business задачи в примерно 3+ независимых местах — сигнал пересмотреть
|
|
pattern, а не требование немедленно извлечь abstraction. Сравни общий helper,
|
|
native API и зрелую небольшую dependency: parsing, serialization, dates,
|
|
debounce, class composition. Три `Array.map` не требуют utility library.
|
|
Не продолжай копировать boilerplate, если один принятый способ дешевле сопровождать.
|
|
|
|
## Автоматические обновления
|
|
|
|
Renovate (`renovate.json` в каждом из пяти repos, копия без общего preset)
|
|
открывает PR в `develop`, автомерж выключен:
|
|
|
|
- minor/patch — группы `non-major dependencies`, `non-major github actions`,
|
|
`non-major container images`; major — только после approval в Dependency Dashboard;
|
|
- npm-обновления ждут 3 дня после публикации (`minimumReleaseAge`);
|
|
не более 5 открытых PR; `lockFileMaintenance` — раз в месяц;
|
|
- без расписания: релизы не привязаны к календарю;
|
|
- OpenSpec в manifests отсутствует (CLI ставится в CI как latest), Renovate его не обновляет.
|
|
|
|
Принятие PR — обычный review и gates repo; правило копируй во все `renovate.json`.
|
|
|
|
## При выборе пакета
|
|
|
|
- Укажи конкретную потребность, альтернативу из текущего stack и существенную
|
|
цену: совместимость, browser bundle/server runtime, maintenance/security.
|
|
- Импортируемый пакет объявляй напрямую в repo владельца; наличие в соседнем
|
|
repo или транзитивном дереве не является dependency contract.
|
|
- Сохраняй exact versions и lockfile. Перед Node-командами активируй `.nvmrc`
|
|
через `nvm use --silent`; воспроизводимая установка — `npm ci` в нужном repo.
|
|
- Peer-конфликты решай совместимыми версиями, без `--force`/`--legacy-peer-deps`.
|
|
Версии и compatibility принадлежат местному manifest/lockfile.
|
|
- После изменения запускай relevant install/type/build/behavior checks и
|
|
`npm audit` при изменении зависимостей. Не добавляй второй analyzer, когда задача решается
|
|
настройкой существующего; [карта проверок](guardrails.md).
|