# Инструменты: от нового проекта до архива — 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)