• Экраны
  • Доки
1Online
ПодпискаКаталог

Начало

С чего начать
Установка
Использование

Справочник

Справочник CLI
Сервер MCP
Навыки агента
Анимированные иконки
Если что-то сломалось
Доступность

Проект

О проекте
Журнал изменений
Как участвовать
Лицензия

Справочник CLI

Все команды, аргументы и флаги Astra.

CLI astra-rn копирует исходник компонента к вам в проект. Ничего не добавляется в зависимости — файлы ложатся в ваш репозиторий, и править их вам. Опубликован в npm как astra-rn и запускается без установки:

npx astra-rn <command>
pnpm dlx astra-rn <command>
yarn dlx astra-rn <command>
bunx --bun astra-rn <command>
npx astra-rn init          # один раз на проектnpx astra-rn add accordion # сколько угодно раз
pnpm dlx astra-rn init          # один раз на проектpnpm dlx astra-rn add accordion # сколько угодно раз
yarn dlx astra-rn init          # один раз на проектyarn dlx astra-rn add accordion # сколько угодно раз
bunx --bun astra-rn init          # один раз на проектbunx --bun astra-rn add accordion # сколько угодно раз

Откуда берутся файлы

Всё читается из astra-codebase — бакета R2, который зеркалит исходник библиотеки по одному объекту на файл.

ПрефиксЧто держит
core/…сами компоненты
types/<component>/извлечённые публичные типы компонента
examples/<component>/экран, который его документирует
helpers/…, shared/…то, на что указывают импорты @/… компонента

Бакет нельзя перечислить по HTTP, поэтому index.json в его корне описывает каждый объект — ключ, размер, sha256, тип содержимого. Именно это перечисление решает, какие файлы есть у компонента, и каждая загрузка сверяется со своим хешем до того, как коснётся вашего диска. core/registry.json несёт метаданные вокруг: категорию, путь в репозитории и тот список, который печатает list.

Наведите registry.origin на своё зеркало этой раскладки — и CLI будет отдавать ваши компоненты.


init

Пишет component.config.json в корне проекта.

npx astra-rn init
pnpm dlx astra-rn init
yarn dlx astra-rn init
bunx --bun astra-rn init

Он читает алиас путей из вашего tsconfig.json и менеджер пакетов из лок-файла, а затем спрашивает, куда класть компоненты, как их раскладывать, что копировать вместе с ними и что делать с недостающими npm-пакетами.

ФлагЧто делает
-y, --yesпринять умолчания, ничего не спрашивать
-f, --forceзаменить существующий конфиг
-d, --dir <path>куда класть компоненты

В файл попадает только то, что отличается от умолчаний, поэтому он остаётся коротким:

component.config.json
{
  "outDir": "src/shared/ui",
  "packageManager": "bun"
}

add

Копирует компоненты к вам в проект.

npx astra-rn add accordionnpx astra-rn add accordion button border-beamnpx astra-rn add                    # выбрать из списка с поиском
pnpm dlx astra-rn add accordionpnpm dlx astra-rn add accordion button border-beampnpm dlx astra-rn add                    # выбрать из списка с поиском
yarn dlx astra-rn add accordionyarn dlx astra-rn add accordion button border-beamyarn dlx astra-rn add                    # выбрать из списка с поиском
bunx --bun astra-rn add accordionbunx --bun astra-rn add accordion button border-beambunx --bun astra-rn add                    # выбрать из списка с поиском
┌ astra-rn add  src/shared/ui
│
├  profile-settings-v1
│  src/shared/ui/blocks/profile-settings-v1/index.tsx
│  src/shared/ui/blocks/profile-settings-v1/types.ts
│  src/shared/ui/blocks/profile-settings-v1/const.ts
│
├  squircle-view  — required by profile-settings-v1
│  src/shared/ui/base/squircle-view/index.tsx
│  src/shared/ui/base/squircle-view/types.ts
│
│  ✓ wrote 5 file(s)
└  added profile-settings-v1 · 5 files

Параметры

ФлагЧто делает
-o, --overwriteзаменить уже существующие файлы
-d, --dir <path>писать не в настроенный outDir, а в другое место
-t, --typesскопировать ещё и публичные типы компонента
-e, --examplesскопировать ещё и экран с примером
--no-depsне идти по импортам в другие компоненты
--no-installникогда не ставить недостающие npm-пакеты
--dryпоказать, что будет записано, и ничего не писать
-y, --yesбез вопросов — безопасные умолчания на всё

Он привозит всё, что ему нужно

Исходник сканируется на импорты @/…. Всё, что отображается в бакет — другой компонент, общий хук, помощник, — тоже скачивается и отмечается как required by <component>. Импорт, на который у реестра нет ответа, называется вслух, а не остаётся молча висеть.

Отключается флагом --no-deps или "include": { "dependencies": false }.

Импорты переписываются

Скопированные файлы пишутся под ваши алиасы, а не под алиасы библиотеки:

- import { SquircleView } from "@/components/base/squircle-view";
+ import { SquircleView } from "@/shared/ui/base/squircle-view";

Задайте алиас как "" — и тот же импорт выйдет относительным, так что проект без сопоставления путей всё равно соберётся.

Недостающие npm-пакеты

Реестр зеркалит исходники, а не пакеты, поэтому доверять списку зависимостей неоткуда. Вместо этого импорты только что записанных файлов читаются обратно, всё, что уже есть в вашем package.json, отбрасывается, а остальное предлагается поставить вашим же менеджером пакетов.

│  ! 2 package(s) are imported but not installed
│  · @shopify/react-native-skia
│  · react-native-reanimated
│
? Install them with bun? › (Y/n)

Будет это вопросом, автоматикой или никогда — решает installDependencies.

--overwrite выбрасывает ваши правки

Скопированный компонент ваш и правится как угодно. --overwrite заменяет файлы на диске версией из реестра, так что все ваши изменения пропадут. Сначала запустите astra-rn diff и посмотрите, что выбрасываете.


list

Все компоненты реестра, по категориям.

npx astra-rn listnpx astra-rn list -c moleculesnpx astra-rn list -s sheet
pnpm dlx astra-rn listpnpm dlx astra-rn list -c moleculespnpm dlx astra-rn list -s sheet
yarn dlx astra-rn listyarn dlx astra-rn list -c moleculesyarn dlx astra-rn list -s sheet
bunx --bun astra-rn listbunx --bun astra-rn list -c moleculesbunx --bun astra-rn list -s sheet
ФлагЧто делает
-c, --category <name>только одна категория
-s, --search <query>фильтр по имени
--jsonнапечатать сырой реестр

info

Что лежит в одном компоненте и есть ли он у вас.

npx astra-rn info accordion
pnpm dlx astra-rn info accordion
yarn dlx astra-rn info accordion
bunx --bun astra-rn info accordion
┌ astra-rn info  accordion
│
│  name            accordion
│  category        molecules
│  source          src/components/molecules/accordion
│  files           3 · 12.4 kB
│  types           1 file(s)
│  example         1 file(s)
│  installed       no
│
├  files
│  index.tsx                        10.8 kB
│  presets.ts                       727 B
│  types.ts                         977 B
└  to add it

diff

Сравнивает то, что на диске, с реестром. Копия из реестра проходит то же переписывание импортов, что и в add, поэтому в отчёт попадают только настоящие расхождения — ваши правки или обновление наверху.

npx astra-rn diff             # всё установленноеnpx astra-rn diff accordion   # один компонент
pnpm dlx astra-rn diff             # всё установленноеpnpm dlx astra-rn diff accordion   # один компонент
yarn dlx astra-rn diff             # всё установленноеyarn dlx astra-rn diff accordion   # один компонент
bunx --bun astra-rn diff             # всё установленноеbunx --bun astra-rn diff accordion   # один компонент
├  profile-settings-v1
│  modified  types.ts
│
│  ! 1 of 12 component(s) differ from the registry
└  to take the registry version

remove

Удаляет папку установленного компонента. Общие помощники остаются на месте — их может импортировать другой компонент.

npx astra-rn remove accordionnpx astra-rn remove accordion button -y
pnpm dlx astra-rn remove accordionpnpm dlx astra-rn remove accordion button -y
yarn dlx astra-rn remove accordionyarn dlx astra-rn remove accordion button -y
bunx --bun astra-rn remove accordionbunx --bun astra-rn remove accordion button -y
ФлагЧто делает
-y, --yesне спрашивать подтверждения

config

Печатает конфигурацию так, как её разрешает CLI — ваш файл со всеми подставленными умолчаниями — и выходит с ненулевым кодом, если что-то неверно.

npx astra-rn confignpx astra-rn config --jsonnpx astra-rn config --clear-cache
pnpm dlx astra-rn configpnpm dlx astra-rn config --jsonpnpm dlx astra-rn config --clear-cache
yarn dlx astra-rn configyarn dlx astra-rn config --jsonyarn dlx astra-rn config --clear-cache
bunx --bun astra-rn configbunx --bun astra-rn config --jsonbunx --bun astra-rn config --clear-cache
ФлагЧто делает
--jsonнапечатать в JSON
--clear-cacheсбросить закэшированные перечисления реестра

create

Разворачивает новое приложение на Expo и настраивает в нём Astra.

npx astra-rn createnpx astra-rn create my-app
pnpm dlx astra-rn createpnpm dlx astra-rn create my-app
yarn dlx astra-rn createyarn dlx astra-rn create my-app
bunx --bun astra-rn createbunx --bun astra-rn create my-app
ВопросЧто значит
Имя приложенияИмя каталога проекта. Пробелы становятся дефисами.
Bundle / package IDbundleIdentifier для iOS и package для Android, пишутся в app.json.
Шаблонblank — typescript (по умолчанию), blank или tabs — expo router.
Менеджер пакетовОпределяется сам, можно переопределить.
Настроить AstraЗапускает astra-rn init в новом проекте.

login

Сохраняет личный токен доступа — без него компоненты Pro не скачиваются. Токен выпускается в настройках аккаунта и начинается с astra_.

npx astra-rn login --token astra_…
pnpm dlx astra-rn login --token astra_…
yarn dlx astra-rn login --token astra_…
bunx --bun astra-rn login --token astra_…
ФлагЧто делает
-t, --token <token>токен из настроек аккаунта Astra

Вместо флага можно задать переменную окружения ASTRA_TOKEN — она же используется при каждом запросе к реестру, если файла с токеном нет.


logout

Удаляет сохранённый токен.

npx astra-rn logout
pnpm dlx astra-rn logout
yarn dlx astra-rn logout
bunx --bun astra-rn logout

Конфигурация

component.config.json лежит в корне проекта. Все ключи необязательны — всё, что пропущено, берётся из умолчания ниже.

КлючПо умолчаниюЧто значит
outDirsrc/shared/componentsкуда пишутся компоненты
structurecategorycategory, flat или mirror
typescripttrueбиблиотека поставляет исходник на TypeScript
aliases.components@/shared/componentsпрефикс импорта, который пишется в скопированные файлы
aliases.utils@/shared/utilsто же, для помощников
aliases.hooks@/shared/hooksто же, для хуков
paths.utilssrc/shared/utilsкуда на диск ложатся помощники
paths.hookssrc/shared/hooksкуда ложатся хуки
paths.typessrc/shared/typesкуда ложатся извлечённые типы
paths.examplessrc/shared/examplesкуда ложатся экраны с примерами
include.dependenciestrueидти по импортам @/… и копировать то, на что они указывают
include.typesfalseкопировать ещё и публичные типы
include.examplesfalseкопировать ещё и экран с примером
overwritefalseзаменять существующие файлы не спрашивая
packageManagerautoauto читает ваш лок-файл
installDependenciespromptauto, prompt или never
registry.originAPI реестра сайта Astra (/api/registry)наведите на своё зеркало; то же задаёт ASTRA_REGISTRY_URL
registry.indexindex.jsonключ файла с перечислением
registry.registrycore/registry.jsonключ метаданных компонентов
registry.cache3600сколько секунд кэшируются перечисления; false отключает

Строка $schema даёт редакторам автодополнение и проверку по всему этому.

Раскладки

category   outDir/molecules/accordion/index.tsx
flat       outDir/accordion/index.tsx
mirror     outDir/blocks/bottom-sheet/airbnb-v1/index.tsx

Пример побогаче

component.config.json
{
  "outDir": "src/ui",
  "structure": "flat",
  "aliases": {
    "components": "~/ui",
    "utils": "~/lib",
    "hooks": "~/hooks"
  },
  "paths": {
    "utils": "src/lib",
    "hooks": "src/hooks",
    "types": "src/types",
    "examples": "src/examples"
  },
  "include": { "dependencies": true, "types": true, "examples": false },
  "packageManager": "pnpm",
  "installDependencies": "auto"
}

Сводка команд

КомандаЧто делает
astra-rn initзаписать component.config.json
astra-rn add [components…]скопировать компоненты к себе
astra-rn listвсе компоненты реестра
astra-rn info <component>что лежит в одном и установлен ли он
astra-rn diff [component]сравнить то, что у вас, с реестром
astra-rn remove <components…>удалить установленный компонент
astra-rn configнапечатать разрешённую конфигурацию
astra-rn create [name]развернуть новое приложение Expo с настроенной Astra
astra-rn loginсохранить токен доступа к компонентам Pro
astra-rn logoutудалить сохранённый токен

За пределами CLI

Тот же реестр доступен кодовым агентам: astra-rn-mcp выставляет его инструментами MCP, а навык using-astra учит агента порядку работы вокруг них.

На этой странице

Откуда берутся файлыinitaddПараметрыОн привозит всё, что ему нужноИмпорты переписываютсяНедостающие npm-пакетыlistinfodiffremoveconfigcreateloginlogoutКонфигурацияРаскладкиПример побогачеСводка командЗа пределами CLI

Сделано в Astra