Перейти к содержанию
Mercury
Русский
Дизайн книга
Меню
Русский

mx — нативный набор инструментов

От приложения на Hyperscript до проверенной сборки: команды и главы курса.

mx — набор инструментов Mercury на Rust. Описанная здесь сборка из исходников сообщает версию 0.1.1; публикация соответствующего выпуска ещё ожидается. Он читает mx.mod модуля и mx.work рабочей области, обслуживает приложение с горячей перезагрузкой, собирает его в бандл и тестирует. Нативные команды работают без Node и npm; отдельно запускаемые пользовательские скрипты могут требовать собственные инструменты.

Что такое mx

  • Система модулей по образцу Go. Модуль объявляет себя в mx.mod и фиксирует загруженные зависимости в mx.sum. Модули, разрабатываемые вместе, объединяются в одном mx.work. Команды mx mod … и mx work … управляют этими файлами так же, как go mod и go work — своими.
  • Сервер разработки. mx dev обслуживает приложение на 127.0.0.1, встраивает карту импортов в страницу и компилирует каждый модуль по запросу.
  • Сборщик бандлов. mx build --bundle собирает страницу приложения с помощью Rolldown, встроенного в сам mx. Поэтому для сборки не нужен node в PATH.
  • Средство запуска тестов и сопутствующие инструменты: mx test выполняет тесты модуля в браузере без графического интерфейса, который mx запускает сам; mx compile запускает Hypercompiler для одного файла; mx lsap запускает языковой сервер Hyperscript, установленный рядом с mx.

Это отдельная рабочая область Rust в fiberfx/mx, а не приложение Mix. mx new создаёт приложение из заполненного кеша модулей; lint, fmt, typecheck и quality проверяют исходники. mx pack --npm готовит и проверяет архив пакета без публикации.

Для работы над исходниками самого Mercury есть mg — Mercury Go: справка, генерация примеров и структурированные ответы для автоматизации. Начните с первых команд; сборкой и тестами приложений по-прежнему занимается mx.

Команды

mx без команды выводит строку использования и завершается с кодом 2:

usage: mx exodus|pack|install|verify|importmap|resolve|scan|build|check|run|compile|work|dev|test|lint|fmt|typecheck|quality|new|lsap …

Ещё одно семейство команд обрабатывается до этого разбора и отсутствует в строке: mx mod, у которого собственная строка использования — usage: mx mod <init|tidy|verify|graph|why|download|cache>.

Основные формы вызова:

usage: mx dev [--root <dir>] [--port <n>] [--importmap] [--inspect]
usage: mx test [<path>...] [--root <dir>] [--timeout <seconds>] [--filter <words>]
usage: mx compile <file> [--options <json>] [--out <file>]
usage: mx build [--host | --bundle | --lib | --package] …
usage: mx lsap [--mcp] | mx lsap --version
usage: mx work edit|use|init|sync|vendor …

mx build --help выводит описание всех четырёх видов сборки: хоста (--host), приложения (--bundle), библиотеки (--lib) и пакета (--package). Там же указано, как mx выбирает вид, если он не задан: mx.json означает сборку хоста, а index.html рядом с mx.mod — бандл приложения. --help вызывает справку только в качестве первого аргумента. В первом уроке разобрано, как mx build принимает это решение.

Как отвечает mx

При чтении результата учитывайте конкретную команду. Для проверок качества действуют такие коды:

Код завершения Значение
0 успех
1 найдены ошибки или требуется форматирование
2 ошибка использования: неверная командная строка
3 проверка недоступна или не смогла выполниться

mx test также возвращает 3 при отсутствии браузера; mx new и mx pack --npm используют 1 для отказа и 2 для неверного вызова. mx run в режиме хоста и mx lsap передают код дочерней программы. Единую таблицу нельзя безусловно применять ко всем командам.

Проверки качества печатают результаты в stdout: --json даёт один объект для отдельной проверки и массив для quality. Диагностику аргументов ищите в stderr. Это отдельный формат команд, а не общая JSON-оболочка всего mx.

Установка mx

В уроке Установка mx сначала проверьте готовность выбранной поставки. Там описаны загрузка нативного архива для Linux x86_64 и стартового приложения, проверка SHA-256, mx install и mx verify. Для этого пути не нужны Rust, Node.js, npm CLI, BEAM и репозиторий. Урок Первая страница создаёт оформленный счётчик Card + Button.

Главы

  1. MX0 — первое приложение: приложение — это index.html рядом с mx.mod; запустите его через mx dev, соберите через mx build --bundle.
  2. MX1 — модули и рабочая область: mx.mod, mx.sum и mx mod, затем mx.work и mx work.
  3. MX2 — цикл разработки и HMR: что обслуживает mx dev и как сохранённая правка попадает на страницу.
  4. MX3 — сборка и поставка: mx build --bundle, --lib, сборка хоста и mx check.
  5. MX4 — Hypercompiler: mx compile и преобразования каждого модуля, который обслуживают mx dev и mx build.
  6. MX5 — инструменты: создание приложения, проверки качества, тесты, кеш задач и упаковка.

Итоговое задание курса — собрать нативное приложение без node в PATH. Для такой проверки подходит сохранённый пример sites/mercury; действующий сайт документации работает как Phoenix-приложение mercury_lms.

Что поставляется

Метаданные выпуска указывают нативный архив и ревизию исходников. Публичная инструкция для первой страницы рассчитана на Linux x86_64; macOS и Windows требуют отдельных проверок. Команды new, lint, fmt, typecheck, quality, заполнение кеша и pack --npm в этом обновлении описаны по сборке из исходников 1fe54fe8. Это не подтверждает их наличие в публичной поставке. Версии в существующих mx.mod и mx.work не нужно механически заменять номером выпуска программы.