Справочник
xflow.json
Поля файла в корне проекта и в папке приложения, исключения из отправки и локальное состояние.
Файлов два вида: в корне проекта лежит projectId, в каждой apps/<папка>/ лежит appId.
По ним CLI понимает, где стоит команда. Оба файла пишут xflow init, xflow link и
xflow apps add; руками правят functions, build и ignore.
Корень проекта
Заголовок раздела «Корень проекта»{ "projectId": "3f2a9c1e-…", "functions": { "book-slot": { "callers": ["zapis"] }, "nightly-report": { "callers": [] } }, "ignore": ["drafts/"]}| Поле | Обязательно | Что значит |
|---|---|---|
projectId |
да | id проекта на платформе |
functions |
нет | объект { "<имя функции>": { "callers": [...] } } |
functions.<имя>.callers |
нет | папки приложений этого проекта, которым можно звать функцию ("zapis" для apps/zapis) |
ignore |
нет | дополнительные правила исключения для корня, синтаксис как в .xflowignore |
- Функция без записи в
functionsили с"callers": []никем из приложений не зовётся: её будит расписание, ключ илиxflow functions invoke. - Зовущие доезжают до платформы на
xflow deploy functions, а не при сохранении файла. - У каждого имени в
functionsдолжна быть папкаfunctions/<имя>/index.ts. Зовущий это папка приложения этого проекта, страница зовущим не бывает. Ошибки: Коды ошибок. - Кто ещё откроет приложение-зовущего, решает его уровень доступа: Доступ.
Папка приложения
Заголовок раздела «Папка приложения»{ "appId": "8b41d0f2-…", "build": { "command": "npm run build", "dir": "dist" }, "ignore": ["fixtures/"]}| Поле | Обязательно | Что значит |
|---|---|---|
appId |
да | id приложения; папку можно переименовать, приложение остаётся тем же |
build.command |
нет | команда сборки, по умолчанию npm run build; скрипт должен быть в package.json |
build.dir |
нет | куда пишет сборка, по умолчанию dist; путь внутри папки приложения, на платформу не уходит |
ignore |
нет | дополнительные правила исключения для этого приложения |
Файл приложения без корня проекта выше не работает: клонируйте проект целиком через
xflow link <id> в пустой папке. Подробнее: Приложения.
Что уходит на платформу
Заголовок раздела «Что уходит на платформу»Корень проекта и каждое приложение отправляются отдельно. Корень отправляет всё, кроме
apps/, плюс файлы apps/<папка>/xflow.json: из них читаются зовущие. Приложение
отправляет свою папку.
Никогда не уходят:
| Что | Почему |
|---|---|
node_modules/, dist/, build/, .next/ |
зависимости и сборку платформа делает сама |
.git/, .xflow/ |
история и локальное состояние |
.env, .env.* |
секреты хранятся в переменных: Переменные и секреты |
.DS_Store, Thumbs.db, tsconfig.tsbuildinfo |
служебные файлы системы и компилятора |
| копии скилла xflow, которые раскладывает CLI | CLI кладёт свежую копию сам |
| символические ссылки | не архивируются |
Тяжёлые фото, видео и PDF держат в файлах проекта, а не в исходниках.
.xflowignore
Заголовок раздела «.xflowignore»Лежит в корне проекта или в папке приложения и действует на то, что отправляется оттуда.
Правила складываются с полем ignore и списком выше.
# черновики и дампыdrafts/*.psd/data/dump.sql| Запись | Значит |
|---|---|
# в начале |
комментарий |
*, ? |
любые символы и один символ внутри имени |
** |
любая глубина папок |
/ в конце |
только папка |
/ в начале или внутри |
путь от папки, где лежит файл; иначе имя ищется на любой глубине |
Отрицания ! нет. Если отправлять стало нечего, команда так и скажет: проверьте .xflowignore.
.xflow/
Заголовок раздела «.xflow/»Локальное состояние папки: с какой ревизией на платформе она сверялась последней и к какой
организации привязан проект. Оно своё у каждой машины, поэтому xflow init и xflow link
дописывают .xflow/ в .gitignore. Удалённая .xflow/ не ломает проект: следующая выкатка
ляжет поверх текущей ревизии и скажет об этом.