Перейти к содержимому

Все поля apps.json: тип, значение по умолчанию и назначение

Диалог «Изменить приложение» показывает те же поля под теми же названиями. Поля, не относящиеся к выбранному типу, затемнены в диалоге, но всё равно сохраняются, с одним исключением: stopCommand сохраняется только пока killMode равен command.

Диалог «Изменить приложение» от name до stopCommand, список killMode выделен рамкой; неиспользуемые поля, такие как processName и stopCommand, затемнены

  1. Список killMode. Поля, которые он не использует, остаются затемнёнными.
Поле Тип Обязательно Где используется Что делает
id строка да все Уникальный ключ. Буквы, цифры, ., _, -, не начинается с -. См. Обзор.
name строка да все Подпись на боковой панели. Не пустая.
group строка да все Заголовок на боковой панели, под которым перечислено приложение. При ручной правке не может быть пустой; диалог сохраняет пустую группу как Apps. Любой текст; новое название создаёт новую группу.
type строка да все web, desktop, static или cli. См. Типы приложений.
command строка все, кроме static все Выполняется в терминале для запуска приложения, через cmd /c в Windows и $SHELL -c в остальных системах (/bin/sh, если SHELL не задана). Для static необязательна.
cwd строка нет все с command Папка, в которой выполняется команда. По умолчанию это рабочая папка самого Moonpool. Поддерживает токены и ./. См. Пути и окружение.
port целое число, от 1 до 65535 нет любой Работает, пока что-то отвечает на этом порту на localhost (IPv4 или IPv6). Используется killMode port.
processName строка нет любой, в основном desktop Работает, пока существует процесс с этим именем. Без учёта регистра, с .exe или без, поэтому my-app совпадает с my-app.exe. В Linux не более 15 символов. Используется killMode processName.
mcpProcessName строка нет любой с processName Шаблон с подстановочными знаками для имени процесса MCP-сервера этого приложения. * соответствует любой последовательности символов, ? одному символу. Регистр не учитывается, шаблон применяется ко всему имени, .exe необязателен. Подходящий процесс считается MCP-сервером приложения (вложенная строка MCP на боковой панели), и первым аргументом ему не обязательно быть mcp. См. mcpProcessName.
url строка только static web, static Страница для открытия. Открываются только URL с http://, https://, mailto: и file://.
openBrowser логическое, по умолчанию false нет любой тип с url (диалог затемняет его для desktop и cli) Автоматически открывать url, как только Moonpool обнаружит, что приложение запущено (см. ниже).
killMode строка нет все Дополнительная очистка при остановке и перезапуске: processName, port, command или none. См. Остановка и перезапуск.
stopCommand строка нет killMode command Команда, выполняемая при остановке. Во всех остальных режимах игнорируется.
env объект со строками нет все Дополнительные переменные окружения. Диалог редактирует их как по одной KEY=VALUE в строке.
icon строка нет все Изображение на боковой панели: путь к файлу, URL http(s) или URI data:. Задаётся через Выбрать значок… в контекстном меню приложения или вручную.
note строка нет все Подсказка при наведении на приложение на боковой панели.

Запись с env и killMode:

apps.json
{
"id": "api",
"name": "API",
"group": "Web apps",
"type": "web",
"command": "npm start",
"port": 3000,
"env": { "PORT": "3000", "NODE_ENV": "development" },
"killMode": "port"
}

О том, как port и killMode работают вместе, см. Поиск и завершение процесса, занимающего порт.

По умолчанию Moonpool считает процесс MCP-сервером приложения, когда его имя совпадает с processName, а первый аргумент равен mcp, например notes-app.exe mcp. Задайте mcpProcessName, когда сервер работает под другим именем: приложение отслеживает один exe, а его MCP-сервер - другой (mog.exe mcp), либо это переименованная копия сервера.

Значение - это шаблон с подстановочными знаками. * соответствует любой последовательности символов (в том числе пустой), а ? ровно одному символу. Сравнение выполняется без учёта регистра со всем именем процесса, а шаблон без .exe совпадает и с именем с .exe. Пустое значение считается незаданным.

{
"id": "destiny",
"name": "Destiny",
"group": "Desktop apps",
"type": "desktop",
"processName": "destiny",
"mcpProcessName": "destiny-mcp-*"
}

Это совпадёт с переименованной копией, например destiny-mcp-2706210170.exe. Процесс, подходящий под mcpProcessName, считается сервером независимо от того, был ли он запущен с mcp, и никогда не считается работой самого приложения. Если шаблон подходит и под сам processName (например, destiny*), Moonpool всё равно требует аргумент mcp, поэтому настоящее приложение никогда не будет принято за свой MCP-сервер. См. Настройка MCP.

Moonpool открывает url один раз, когда приложение, запущенное Moonpool, впервые показывается как «работает». Для этого нужен port или processName, чтобы это обнаружить. Без них «работает» означает лишь, что процесс терминала жив, и браузер автоматически не открывается. Отключите openBrowser, если ваша команда сама открывает браузер. Запись static без команды открывает url при каждом нажатии «Запустить», независимо от openBrowser.

Два приложения с одинаковым port помечаются на боковой панели.

Значком приложения становится первый из существующих вариантов:

  1. Поле icon.
  2. icons\<id>.<ext> в папке конфигурации, например icons\site.png.
  3. Файл значка в собственной папке приложения (его cwd или папка из url вида file:///).
  4. Для desktop - значок собранного или запущенного .exe.
  5. Для web и static - /favicon.ico сайта, когда сервер запущен.
  6. Значок-глиф для типа.

Большинству приложений настройка значка не нужна.

Moonpool: бесплатное программное обеспечение от FasterDB