Шаблон монорепозитория для быстрого старта клиент-серверного приложения
Для работы с проектом необходимо установить rush глобально:
npm install -g @microsoft/rush
Документацию по работе с rush можно найти здесь.
НЕ использовать использовать пакетный менеджер напрямую (например, npm install
, npm update
, npm link
, npm dedupe
, pnpm install
), так как это может повредить структуру зависимостей. Исключение составляет запуск npm-скриптов через npm run
или, например, npm start
.
Необходимо пользоваться аналогами команд, которые предоставляет rush.
- @monowebo/backend —
express
сервер - @monowebo/frontend —
react
клиентское приложение - @monowebo/utilities — набор общих утилит, которые можно использовать как на клиенте, так и на сервере
Перед разработкой пакета из монорепозитория необходимо собрать актуальную версию всех его зависимостей. Сделать это можно командой:
rush build -T package-name # "package-name" — название пакета, у которого имеются зависимости в этом монорепозитории
Добавить зависимость к пакету в репозитории можно двумя способами:
cd apps/frontend # Перейти в директорию пакета
rush add --package react # Добавить текущему пакету зависимость
Изменить секцию dependencies
в package.json
у пакета и выполнить команду:
rush update
Команду rush update
можно использовать в любой момент. Если rush обнаружит изменения в package.json
любого из пакетов, он автоматически установит недостающие зависимости. Если список зависимостей актуален, то команда выполнится мгновенно.
Зависимости устанавливаются с помощью PNPM со строгой проверкой версий peerDependencies
во избежание построения невалидного дерева зависимостей или дублирования, поэтому при возникновении ошибки во время установки может понадобиться добавить недостающие пакеты в package.json
самостоятельно
Для единого форматирования кода используется Prettier, а для соблюдения стиля написания кода — ESLint с шаблоном @rushstack/eslint-config
Перед коммитом изменённые файлы проверяются ESLint на соответствие стилю (в случае несоответствия коммит будет отклонён), а так же форматируются Prettier
Для удобной работы со структурой монорепозитория проект стоит открывать в VSCode из файла monowebo.code-workspace
Для удобства работы согласно стилю кода можно установить расширения для VSCode: