# Проверка перед сборкой

> Что платформа проверяет в исходниках до сборки и что блокирует сборку.

> Оглавление всей документации: https://docs.getxflow.com/llms.txt

До сборки платформа проверяет исходники. Нарушения приходят разом (до 50), с файлами и
строками. Отклонённая проверкой попытка ничего не стоит.

## Приложение

| Правило | Почему |
|---|---|
| `package.json` со скриптом сборки, `vite.config.*`, `vite` в зависимостях | платформа собирает только Vite |
| нет `next`, `nuxt`, Remix, `@sveltejs/kit`, `astro` | серверных фреймворков нет |
| `index.html` в корне с `id="root"` и скриптом `src/main.tsx` (или `.ts`, `.jsx`, `.js`) | точка входа шаблона |
| имена файлов латиницей, цифры, пробел и `. - _ ~` | `логотип.png` ломает сборку |
| функции через `xflow.functions.invoke`, без адресов | см. [Шаблон](https://docs.getxflow.com/develop/template.md) |
| нет ключей и токенов, нет `fs`, `express`, `http`, `child_process` | код открыт в браузере |
| нет `alert()`, `confirm()`, `prompt()`, `console.log` вне `src/components/ui` и `blocks` | посетители видят консоль |
| у `react-query`, `react-redux`, `sonner` и подобных подключён провайдер | иначе белый экран |
| файлы платформы не изменены | см. [Шаблон](https://docs.getxflow.com/develop/template.md) |

`console.error` и `console.warn` разрешены, но в логи не попадают.

Уже после сборки проверяются её размер (до 15 МБ) и `base` в `vite.config.*` как в шаблоне:
такая неудача тратит сборку. Архив исходников до 10 МБ, тяжёлое кладут в [файлы](https://docs.getxflow.com/platform/storage.md).

## Корень проекта

- Имя функции: строчные латинские буквы, цифры и дефис, до 41 символа (`send-mail`).
- У каждого имени в `functions` корневого `xflow.json` есть папка `functions/<имя>/` с
  `index.ts` (или `.js`, `.mjs`).
- Зовущий это папка приложения этого проекта, иначе `unknown-caller`.
- Переменные читаются буквально: `process.env.ИМЯ`, см. [Переменные и секреты](https://docs.getxflow.com/platform/secrets.md).

## Пометки «Unfinished»

Не блокируют, но приходят строкой `Unfinished:`. До того как сказать «готово», их исправляют:

- заголовок страницы остался из шаблона;
- в `index.html` нет `<link rel="icon">`;
- в функции `exports.access`: он ничего не значит, зовущих задаёт `xflow.json`.
