Перейти до основного вмісту

Спільні бібліотеки

Спільний код 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: перевірка webhook, типізований REST-клієнт, допоміжні засоби OAuthЗовнішні розробники інтеграцій
@churchapps/textingАбстракція провайдерів SMS (Text In Church, Clearstream, Mutual Ministry, MinistryStuff, Nalo Solutions, Twilio)Api

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

Налаштування робочого простору​

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

Репозиторій використовує Yarn Berry (поле packageManager у корені є визначальним) з одним lock-файлом. yarn build збирає кожен пакет у порядку залежностей; yarn test запускає тести всіх пакетів.

Випуск через Changesets​

Кожна зміна в пакеті супроводжується changeset:

  1. Виконайте yarn changeset у корені робочого простору. Виберіть пакет(и), які ви змінювали, тип підвищення версії (patch = виправлення, minor = новий експорт або функція, major = зміна, що порушує сумісність) і напишіть короткий підсумок в один рядок — він стане записом у CHANGELOG.
  2. Додайте згенерований файл .changeset/*.md до коміту разом зі зміною коду. Hook pre-commit блокує коміти, які змінюють вихідний код пакета без доданого до індексу changeset.
  3. Коли все готово до публікації, виконайте yarn publish-all у корені. Ця команда обробляє очікувані changesets (підвищує версії, записує CHANGELOG, синхронізує діапазони внутрішніх залежностей), збирає все у порядку залежностей і публікує оновлені пакети в npm. Потім зробіть коміт і відправте підвищення версій.
попередження

Ніколи не запускайте звичайний npm publish всередині окремого пакета — це пропускає порядок збірки та облік версій, яким займається скрипт випуску. Для публікації потрібен обліковий запис npm з правами на публікацію в області @churchapps.

Локальна розробка з застосунком-споживачем​

У робочому просторі пакети збираються безпосередньо з власних сусідніх пакетів — прив'язка (linking) не потрібна. Щоб протестувати неопубліковану збірку пакета всередині застосунку-споживача (B1Admin, B1App тощо), додайте тимчасовий Yarn portal у споживачі:

# in the consuming project
yarn link ../Packages/helpers
# ... test ...
yarn unlink ../Packages/helpers && yarn install

Спочатку зберіть пакет (yarn build у корені робочого простору) — споживач читає скомпільований вивід dist/, а не вихідний код.

попередження

yarn link записує resolution portal у package.json споживача. Ніколи не комітьте його — після завершення завжди виконуйте yarn unlink і переінсталюйте залежності.