# Инструменты: от нового проекта до архива — Mercury LMS > Сборка из исходников 0e08e7af420e92b1d7a5f44681dcac3366bfbda0, mx 0.1.1. Публичный выпуск ещё ожидается. Эти команды не подтверждены одним лишь наличием публичного архива. ## Приложение и первый кеш mx new берёт Hyperscript/UI из кеша модулей. При доступной сети заполните его. Сохраните существующую настройку доверенной базы сумм; без неё установщик допускает разовое исключение: ```sh MXNOSUMDB='registry.npmjs.org/fiberfx/*' mx mod cache mx new hello cd hello mx verify mx dev ``` Исключение принимает суммы перечисленных пакетов Mercury без подписанной базы; не сохраняйте его в окружении постоянно. После остановки dev выполните mx build. new создаёт package.json, mx.mod, mx.sum, index.html, src/main.tsx и установленное хранилище. Версии зависимостей берутся из кеша. Новый mx.mod содержит mx 0.1.1; старые mx.mod/mx.work не меняйте механически по номеру исполняемого файла. Пустой кеш или непустой целевой каталог — отказ 1; нет имени — 2. Работа без сети требует заполненных кешей. ## Качество Команды ниже относятся к отдельному учебному проекту без зависимостей из раздела «Типы». `mx lint`; `mx fmt --check`; `mx typecheck`; `mx quality`. Исправления: `mx lint --fix`, `mx fmt`, `mx quality --fix`. --check не пишет; обычный fmt пишет. lint --fix исправляет безопасные случаи, но оставшиеся ошибки сохраняют код 1. Просмотрите diff и повторите проверку. quality выполняет все три этапа, даже после ошибки, и возвращает наибольший код. 0 — нет ошибок (возможны предупреждения), 1 — найдены ошибки/нужно форматирование, 2 — неверный вызов, 3 — недоступно/не удалось выполнить. --json отдельного этапа — объект stage/outcome/detail/files/fixed/findings; quality — массив. Это не общая оболочка ответов mx. ## Типы `mx typecheck [--root ] [--json] […]`. По умолчанию нужен корневой tsconfig.json. Отдельное упражнение без зависимостей: создайте каталог course-typecheck, подкаталог src и файлы: `package.json`: ```json {"name":"course-typecheck","type":"module"} ``` `mx.mod`: ```text module registry.npmjs.org/course-typecheck mx 0.1.1 ``` `tsconfig.json`: ```json { "compilerOptions": { "target": "ES2022", "module": "ESNext", "moduleResolution": "Bundler", "strict": true, "skipLibCheck": true }, "include": ["src"] } ``` `src/main.ts`: ```ts export const value: number = 1; ``` Из course-typecheck запустите mx typecheck: код 0, проверен один файл, ошибок/предупреждений нет, проект не изменён. Добавьте src/type-error.ts с `export const x: number = "s";`: ожидаются TS2322 и код 1. Удалите этот учебный файл, затем mx quality --json: три passed, код 0. skipLibCheck не отключает проверку собственного кода. Нативный TypeScript 7.0.2 загружается архивом с закреплённой SHA-256 в tools кеша модулей. mx mod cache пытается загрузить компилятор и отдельно сообщает неудачу. Первая проверка может загрузить его при разрешённой сети. Импорты разрешает mx; временная конфигурация не использует node_modules и автоматически подключаемые ambient-типы, не меняет проект. MXPROXY=off либо цепочка только file:// и off запрещает сеть; компилятор должен уже быть в кеше. Его отсутствие — unavailable/3, неверная сумма архива — could not run/3, ошибки типов — 1. Наличие модулей в кеше не доказывает наличие компилятора. ### Типы созданного приложения Вернитесь в hello из `mx new hello`. Создайте корневой tsconfig.json: target ES2022, module ESNext, moduleResolution Bundler, jsx react-jsx, jsxImportSource @fiberfx/hyperscript, strict true, skipLibCheck true, include ["src"]. Для проверенного кеша с Hyperscript/UI 4.1.1 команда `mx typecheck` даёт 0 ошибок в 1 файле и код 0. Добавьте src/planted.ts с `export const x: number = "s";`: ожидаются TS2322 в 1:14 и код 1. Удалите только учебный файл и повторите проверку: снова 0. Проверка не меняет файлы проекта; отсутствие компилятора без сети по-прежнему даёт unavailable/3. ## Браузерные тесты `mx test [...] [--root ] [--timeout ] [--filter ]`. Файлы *.test.* / *.spec.*: js mjs jsx ts mts tsx; исключены node_modules, dist, target, coverage. Браузер: MX_BROWSER, иначе Chromium/headless shell из кешей Playwright. Общий тайм-аут 120 с, тест 5 с, хук 10 с. Фильтр ищет подстроку в > . 0 — всё прошло; 1 — ошибка, нет тестов или нарушен запуск; 2 — неверный вызов; 3 — нет браузера. Вывод: ok/skip/FAIL и итог passed/failed. Невыполненная проверка не является успешной. Импорт vitest обслуживает среда mx: describe/it/test, хуки, expect, vi.fn/spyOn/stubGlobal, таймеры, setSystemTime. vi.mock не поддерживается. expectTypeOf/assertType ничего не проверяют во время выполнения. `visit(url, {width, height, scale, mobile, scheme, ready})` открывает страницу; ready — CSS-селектор, scheme — prefers-color-scheme. evaluate(fn, ...args) выполняет код на странице и возвращает JSON; close() закрывает её. Оставшиеся страницы закрываются после тестового файла. ## Языковой сервер `mx lsap [--mcp]` либо `mx lsap --version`. Требует hyperscript-lsap рядом с mx, передаёт HYPERSCRIPT_LSAP_MX и код завершения сервера. --version показывает версии отдельно; проверенный архив вернул mx 0.1.1 и hyperscript-lsap 0.1.0. Нет сервера — отказ 1. Unix-сервер не входит в Windows-поставку; другой сервер автоматически не выбирается. ## Задачи и два кеша Если package.json содержит скрипт, `mx run [--no-cache] [--verify] [-r | --filter ] [-j ] [-- args]` выполняет задачу. Ключ учитывает входные файлы, команду, аргументы, инструменты, положение в workspace, NODE_ENV и MXRUN_ENV. hit восстанавливает файлы и журнал; miss объясняет различие. Сохраняется только успех; mx test не кешируется. --verify повторно выполняет попадание и сверяет результат. -r/--filter требуют mx.work. - MXRUN_CACHE — кеш задач; иначе $XDG_CACHE_HOME/mx/run, затем ~/.cache/mx/run. - MXCACHE — кеш модулей; на Unix по умолчанию ~/.mercury/modules. Это другой каталог. Если скрипта нет, run собирает хост и запускает команду, например `mx run mix phx.server`, сохраняя её сигналы и статус. ## Архив пакета `mx pack --npm […]` берёт состав из package.json, пишет детерминированный .mx/pack/*.tgz и проверяет его на отдельном потребителе вне workspace: установка с peers, экспортируемые пути, импорты модулей и деклараций. Для зависимостей нужны прокси/кеш, возможна сеть. Отсутствующие/неверные/устаревшие результаты сборки — 1; при наличии build-скрипта выполните mx run build. Провал проверки удаляет архив. Ничего не публикуется. Скрипт "pack": "mx pack --npm" позволяет mx run pack кешировать архив; проверка потребителем повторяется даже при hit. ## Навигация - [Страница в браузере](/ru/mx/tools) - [Курс](/ru/mx/llms.txt) - [Индекс для агентов](/ru/llms.txt) - [Все английские текстовые версии](/llms-full.txt) - [Карта сайта](/sitemap.xml)