Перейти к основному содержимому

Общие библиотеки

Общий код ChurchApps публикуется в npm под областью @churchapps/*. Все общие пакеты находятся в одном репозитории — Packages — управляется как рабочее пространство Yarn (Berry) и версируется с помощью changesets.

Пакеты

ПакетОписаниеИспользуется
@churchapps/helpersУровень фундамента: функции помощника без фреймворка и общие интерфейсы TypeScript, которые образуют кросс-приложение контракт данныхВсе проекты
@churchapps/apihelperУтилиты Express на стороне сервера: аутентификация, базовые контроллеры, доступ к базе данных, интеграции AWS и электронной почтыВсе API
@churchapps/apphelperОбщие React-компоненты и модули функций (вход, пожертвования, формы, markdown, веб-сайт)Все веб-приложения
@churchapps/content-providersАбстракция над провайдерами контента третьих сторон (Lessons.church, Planning Center, Dropbox и другие)Api, B1Admin, B1App, FreePlay
@churchapps/integration-sdkНабор инструментов для построения интеграций B1.church: проверка вебхука, типизированный REST клиент, помощники OAuthРазработчики внешних интеграций
@churchapps/textingАбстракция провайдера SMS (Text In Church, Clearstream, Mutual Ministry)Api

Направление зависимостей строго направлено вниз: приложения зависят от apihelper и apphelper, которые объявляют @churchapps/helpers как peer зависимость, так что каждое приложение разрешает ровно одну копию.

Установка рабочего пространства

git clone https://github.com/ChurchApps/Packages.git
cd Packages
yarn install
yarn build

Репо использует Yarn Berry (поле packageManager в корне авторитетно) с единственным lockfile. yarn build создаёт каждый пакет в порядке зависимостей; yarn test запускает все тесты пакетов.

Выпуск с Changesets

Каждое изменение пакета поставляется с changeset:

  1. Запустите yarn changeset в корне рабочего пространства. Выберите пакет(ы), которые вы трогали, тип bump (patch = исправление, minor = новый экспорт или функция, major = breaking), и напишите одностроковое резюме — оно становится записью CHANGELOG.
  2. Зафиксируйте сгенерированный файл .changeset/*.md вместе с вашим изменением кода. Pre-commit hook блокирует коммиты, которые изменяют источник пакета без staged changeset.
  3. Когда будете готовы к публикации, запустите yarn publish-all в корне. Это потребляет ожидающие changesets (изменяя версии, пиша CHANGELOGs, синхронизируя диапазоны зависимостей внутри), создаёт всё в порядке зависимостей и публикует изменённые пакеты в npm. Затем зафиксируйте и перемещайте изменения версии.
Предупреждение

Никогда не запускайте необработанный npm publish внутри отдельного пакета — это пропускает порядок сборки и учёт версий, которые обрабатывает сценарий выпуска. Публикация требует учётной записи npm с правами публикации для области @churchapps.

Локальная разработка в потребляющем приложении

Внутри рабочего пространства пакеты создаются напрямую против их братьев и сестёр — связывание не требуется. Для тестирования несоциированной сборки пакета внутри потребляющего приложения (B1Admin, B1App и т.д.) добавьте временный Yarn portal в потребителя:

# в потребляющем проекте
yarn link ../Packages/helpers
# ... тестирование ...
yarn unlink ../Packages/helpers && yarn install

Сначала соберите пакет (yarn build в корне рабочего пространства) — потребитель читает выведённый выход dist/, не источник.

Предупреждение

yarn link пишет разрешение portal в package.json потребителя. Никогда не фиксируйте его — всегда yarn unlink и переустановите когда будете готовы.