Локальная линковка
Проблема
Заголовок раздела «Проблема»При разработке на нативной платформе каждое изменение токена требовало выпуска релиза 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