Участие в разработке
Спасибо, что хотите помочь с RedSpaceM SDK! Эта страница описывает, как собирать, тестировать и публиковать пакеты.
Требования
- Bun 1.3+ — рантайм, пакетный менеджер и тест-раннер.
- Git для контроля версий.
Структура репозитория
packages/@redspacem/
server-types/ # типизированный контракт mp.* + хелперы
rpc/ # type-safe RPC-слой
client-types/ # типы клиентского API
browser-types/ # типы CEF/NUI-моста
di/ # мини-контейнер DI
testing/ # моки для юнит-тестов
examples/freeroam # пример гейммод-ресурса
docs/ # документация (EN + RU)
Настройка
bun installЧастые команды
bun run lint # Biome check (форматтер + линтер)
bun run format # Biome format --write
bun run typecheck # tsc --noEmit во всех пакетах workspace
bun test # bun test по всему workspace
bun run build # сборка dist/ для каждого пакета (в топологическом порядке)bun run build компилирует каждый пакет через tsc -p tsconfig.build.json
в dist/index.js + dist/index.d.ts. Пакеты собираются в порядке зависимостей
(см. корневой package.json).
Примечание: typecheck/test разрешают соседние пакеты через опубликованные
exports(указывают наdist/), поэтому после свежего клонирования сначала выполнитеbun run build, а затемbun run typecheck/bun test.
Конвенции кода
- Строгий TypeScript;
tsconfig.jsonкаждого пакета расширяет../../tsconfig.base.json. - Biome: ширина строки 100, двойные кавычки, обязательные точки с запятой,
импорты упорядочены,
noExplicitAny— ошибка. - Без комментариев, если они не добавляют ценности (doc-комментарии для публичного API приветствуются).
- Тесты лежат рядом с исходниками как
src/*.test.tsи импортируют из../src/index.ts(не изdist/).
Добавление или изменение пакета
- Держите пакеты сфокусированными и с минимумом зависимостей.
- Обновите
src/index.ts, добавьте/поправьтеsrc/*.test.ts. - Поддерживайте метаданные
package.json(description, keywords, license, repository). - Прогоните весь набор:
bun run lint,bun run build,bun run typecheck,bun test.
Публикация
Публикация выполняется по пакетам, в порядке зависимостей, из тегового релиза
(vX.Y.Z). CI делает это автоматически через workflow publish; локально:
bun run build # убедитесь, что dist/ актуален
bun pm login # аутентификация в npm
for pkg in server-types rpc client-types di browser-types testing; do
(cd packages/@redspacem/$pkg && bun publish --access public)
doneПорядок важен: server-types → rpc → client-types → di → browser-types → testing.
Чек-лист перед публикацией
-
bun run lint,bun run build,bun run typecheck,bun test— всё зелёное -
versionобновлён и создан git-тег -
bun publish --dry-runпоказываетpackage.json,dist/*иLICENSE - В репозитории нет секретов (файлы
.envв gitignore)