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

Локальная линковка

При разработке на нативной платформе каждое изменение токена требовало выпуска релиза core и последующего повышения версии зависимости — петля обратной связи получалась слишком длинной.

При семейной структуре (репозитории лежат в одном родительском каталоге) нативные репозитории во время локальной разработки через локальное разрешение с проверкой существования читают артефакты dist/ этого репозитория напрямую: изменили токен — перезапустили pnpm codegen в этом репозитории, и новое значение применяется мгновенно, без публикации пакета. Если репозитория нет на месте (например, в CI при одиночном клоне), происходит автоматический откат к уже опубликованным пакетам соответствующих платформ.

Механизм защиты структурно идентичен createLocalShareAliases направления web: проверяется existsSync(<coreRoot>/dist/android) (артефакты android существуют — значит, codegen в этом репозитории уже запускался), и при их отсутствии локальные пути не подменяются.

Каждый нативный репозиторий реализует подстановку самостоятельно; этот репозиторий её не навязывает:

Платформа Способ подстановки
Android Каталог локального maven-репозитория в Gradle
iOS Локальная path-зависимость SPM
HarmonyOS Зависимость ohpm file:
C CMake add_subdirectory или путь к заголовочным файлам
1. Изменить tokens/*.json в этом репозитории
2. pnpm codegen → dist/ обновляется мгновенно
3. Собрать/запустить в нативном репозитории → новые токены уже действуют

scripts/resolve-local-tokens.mjs — скрипт, реализующий этот механизм защиты.

  • Локальная линковка работает только в семейной структуре (репозитории в одном родительском каталоге).
  • Линковка читает dist/, поэтому после изменения токенов сначала нужно запустить codegen.
  • После выпуска релиза нативным платформам следует вернуться на официальную версию зависимости, чтобы не оставаться на локальных путях надолго.

Copyright © 2024-2026 FengMo WenXue