$mol работает в любом редакторе, но небольшой набор инструментов делает .view.tree и типизированные стили гораздо удобнее: генератор проектов, языковой сервер, интеграции с редакторами Zed и VS Code, а также скилл, который учит LLM-ассистентов фреймворку.
create-view-tree-lsp создаёт готовый к запуску модуль $mol, чтобы вам не собирать шаблонный код вручную:1npxcreate-view-tree-lspbog/myappЗапускать из корня своей копии MAM: пути модулей отсчитываются оттуда, там же проекту и жить. Вне воркспейса команда предупредит, а не оставит выяснять это на первой сборке.Аргумент — путь модуля (namespace/name или эквивалентное bog_myapp). Он записывает view.tree, view.ts, view.css.ts и index.html для работающего приложения, плюс GitHub Actions для его деплоя.Всё, что генератор умеет положить, кладётся по умолчанию. Вы называете только то, чего не хотите:1npxcreate-view-tree-lspbog/myapp--no-tauri--no-backend--no-baza — local-first хранилище Гипер База--no-docker — настройка Docker с docker-compose.yml и конфигом nginx--no-tauri — десктопная оболочка Tauri--no-backend — REST-бэкенд $mol_server с хранилищем node:sqlite и общим типом элемента на TypeScript--no-prerender, --no-seo — видимость для поисковиков, описанная ниже в разделе Непрерывная интеграцияНезнакомый флаг обрывает запуск, так что опечатка не оставит в проекте лишнего молча.Генератор — это тонкая обёртка над CLI языкового сервера, так что npxview-tree-lspcreatebog/myapp делает то же самое напрямую.
Переводы лежат рядом со своим модулем, в <модуль>/<имя>.locale=<lang>.json. Коду так удобно, переводчику — нет: вместо одного списка фраз он получает тридцать мелких файлов.$yuf_localizer закрывает этот разрыв. Укажите ему адреса проектов и коды языков — и он покажет все ключи одним списком с поиском, отмечая те, до которых ещё не дошли руки: ключи, которые есть только по-английски, изменённые, но не зафиксированные, и устаревшие, которых в проекте уже нет. Переводы держатся в браузере, пока вы их не выгрузите, так что между заходами ничего не теряется.Когда переводчик закончил, выгрузите результат и разложите его обратно по модулям:1# из корня MAM2npxview-tree-lsplocalebog/myapp/app/---exclude=mol--updateАргументом можно дать и папку, и отдельный файл локали. Флаги:Ключ несёт путь к своему модулю, поэтому $my_page_greeting попадёт в my/page/page.locale=ru.json — рядом с исходниками, которым принадлежит. А вот вычислить этот модуль сложнее, чем кажется: _ разделяет и папки, и слова, так что «самый длинный совпавший путь» — неверный ответ. В $my_page_lang_hint свойство начинается на lang, и настоящий соседний подмодуль my/page/lang забрал бы ключ себе. Поэтому команда спрашивает у каждого кандидата, какие ключи он объявил — MAM записывает ровно их в его файл локали в -view.tree, — и отдаёт ключ владельцу.
Генератор записывает GitHub Actions в .github/workflows/, так что новый проект деплоится и релизится без дополнительной настройки.deploy.yml запускается на каждый push. Он собирает приложение с помощью hyoo-ru/mam_build, публикует app/- в GitHub Pages из main и даёт каждой ветке feature/* свою папку предпросмотра — она удаляется автоматически, когда ветку удаляют.