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.
Главы
- MX0 — первое приложение: приложение — это
index.htmlрядом сmx.mod; запустите его черезmx dev, соберите черезmx build --bundle. - MX1 — модули и рабочая область:
mx.mod,mx.sumиmx mod, затемmx.workиmx work. - MX2 — цикл разработки и HMR: что обслуживает
mx devи как сохранённая правка попадает на страницу. - MX3 — сборка и поставка:
mx build --bundle,--lib, сборка хоста иmx check. - MX4 — Hypercompiler:
mx compileи преобразования каждого модуля, который обслуживают mx dev и mx build. - 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 не нужно механически заменять номером выпуска программы.