Конфигурация
deno desktop доступен начиная с Deno v2.9.0. Если у вас более ранняя версия, обновите Deno, чтобы использовать его.
Вся конфигурация для deno desktop находится в блоке desktop в deno.json. Большинство полей необязательны; проект без блока desktop по-прежнему компилируется, используя разумные значения по умолчанию.
Полный пример
{
"name": "my-app",
"version": "1.4.0",
"exports": "./main.ts",
"desktop": {
"app": {
"name": "My App",
"identifier": "com.example.myapp",
"icons": {
"macos": "./icons/app.icns",
"windows": "./icons/app.ico",
"linux": "./icons/app.png"
},
"deepLinks": ["myapp"]
},
"backend": "cef",
"output": {
"macos": "./dist/MyApp.app",
"windows": "./dist/MyApp",
"linux": "./dist/my-app"
},
"macos": {
"codesignIdentity": "Developer ID Application: Acme, Inc. (TEAMID)"
},
"release": {
"baseUrl": "https://releases.example.com/my-app"
},
"errorReporting": {
"url": "https://errors.example.com/report"
}
}
}
app
Метаданные, встроенные в скомпилированный двоичный файл.
app.name
Отображаемое имя приложения. Используется по умолчанию в качестве заголовка окна, имени приложения в строке меню macOS, подсказки на панели задач Windows и имени записи .desktop в Linux. Если это поле не задано, используется значение поля name в корне deno.json.
app.identifier
Идентификатор пакета / приложения в формате обратного DNS (например, com.example.myapp). Используется для CFBundleIdentifier в macOS, идентификатора файла .desktop в Linux и AppUserModelID в Windows. Если значение не задано, генерируется синтетический com.deno.desktop.<app-slug>. Для предоставления разрешения на отправку уведомлений macOS требуется постоянный идентификатор, поэтому задайте настоящий идентификатор для любого приложения, использующего уведомления.
app.icons
Пути к значкам для каждой платформы относительно deno.json.
"icons": {
"macos": "./icons/app.icns",
"windows": "./icons/app.ico",
"linux": "./icons/app.png"
}
Для macOS и Linux также можно передать массив PNG-файлов, которые при сборке будут объединены в значок с несколькими разрешениями:
"icons": {
"macos": [
{ "path": "./icons/16.png", "size": 16 },
{ "path": "./icons/32.png", "size": 32 },
{ "path": "./icons/128.png", "size": 128 },
{ "path": "./icons/256.png", "size": 256 },
{ "path": "./icons/512.png", "size": 512 }
]
}
Файлы .icns (macOS) и .ico (Windows) передаются без изменений. PNG-файлы объединяются в контейнер нужного формата для каждой платформы.
Если для платформы не задана запись icons, используется значок Deno по умолчанию.
app.deepLinks
Пользовательские схемы URL (глубокие ссылки), регистрируемые приложением в ОС, чтобы при открытии ссылки <scheme>://... она перенаправлялась в приложение. Каждая запись — это только имя схемы, без ://.
"deepLinks": ["myapp"]
При указанных выше настройках ОС будет считать, что myapp://open/document/42 принадлежит вашему приложению. Перечислите несколько схем, если приложение обрабатывает больше одной:
"deepLinks": ["myapp", "myapp-beta"]
Имена схем должны соответствовать грамматике RFC 3986: начинаться с буквы ASCII и далее содержать буквы, цифры, +, - и .. При регистрации имена переводятся в нижний регистр. Зарезервированные схемы http, https, file, ftp, ws и wss отклоняются, поскольку их регистрация в качестве обработчиков приложения перехватила бы обычный просмотр веб-страниц. Сборка завершится ошибкой, если схема недопустима или зарезервирована.
Регистрация выполняется при создании пакета для каждой платформы:
-
macOS добавляет запись
CFBundleURLTypes(с вашими схемами вCFBundleURLSchemes) вInfo.plistпакета. Эта запись создаётся до подписания кода, чтобы подпись оставалась действительной. -
Linux добавляет тип MIME
x-scheme-handler/<scheme>в запись.desktopи проверяет, чтоExec=передаёт открытую URL-ссылку с помощью кода поля%u. -
Windows не поддерживает регистрацию обработчиков протоколов внутри пакета, поэтому средство создания пакета помещает
register-deep-links.batрядом с программой запуска. В нём создаются ключиHKCU\Software\Classes\<scheme>, указывающие на программу запуска. После установки установщик (или пользователь) запускает этот файл один раз.
Эта настройка регистрирует схемы в ОС, чтобы ссылки открывались в вашем приложении. Обработка открытой URL-ссылки в работающем приложении (передача URL вашему коду) появится в одном из следующих выпусков; укажите схемы сейчас, чтобы настроить упаковку и регистрацию в ОС.
backend
Встраиваемый движок веб-рендеринга. Возможные значения: "cef", "webview" или "raw". По умолчанию: "webview".
"backend": "webview"
Флаг CLI --backend переопределяет это значение для одной сборки, но принимает только cef и webview; выберите здесь raw в deno.json. Сведения о компромиссах и поддерживаемых целевых платформах см. в разделе «Бэкенды».
output
Пути вывода для каждой платформы.
"output": {
"macos": "./dist/MyApp.app",
"windows": "./dist/MyApp",
"linux": "./dist/my-app"
}
Формат результата определяется расширением пути:
| Расширение в macOS | Результат |
|---|---|
.app | Пакет приложения macOS |
.dmg | Образ диска DMG (создаётся с помощью hdiutil) |
| Расширение в Windows | Результат |
|---|---|
| (нет) / каталог | Каталог приложения с программой запуска .bat и DLL-файлами |
.msi | Пакет установщика Windows |
| Расширение в Linux | Результат |
|---|---|
| (нет) / каталог | Каталог приложения со скриптом запуска |
.AppImage |
.AppImage пакет в одном файле |
.deb | Пакет Debian/Ubuntu |
.rpm | Пакет Fedora/RHEL |
Флаг CLI --output переопределяет это значение для одной сборки.
macos
Параметры сборки для macOS.
macos.codesignIdentity
Идентификатор подписи кода, используемый для подписи пакета macOS, например "Developer ID Application: Acme, Inc. (TEAMID)", или "-" для явной самоподписанной подписи. Если значение не задано, deno desktop всё равно подписывает пакет самоподписанной подписью, чтобы у него был постоянный идентификатор кода (необходимый для разрешения на отправку уведомлений), однако для распространения результат потребуется дополнительно подписать. Укажите настоящий идентификатор Developer ID, чтобы создать пакет, который можно нотариально заверить. См. раздел «Распространение».
release
Конфигурация системы автоматического обновления.
release.baseUrl
Базовый URL сервера релизов. Среда выполнения получает <baseUrl>/latest.json и загружает файлы исправлений относительно этого URL. Полное описание формата манифеста и процесса установки исправлений см. в разделе «Автоматическое обновление».
"release": {
"baseUrl": "https://releases.example.com/my-app"
}
Это единственный URL сервера, который среда выполнения проверяет автоматически. По умолчанию Deno.autoUpdate() использует этот URL, но его можно переопределить при каждом вызове.
errorReporting
Перехватывать необработанные исключения, необработанные отклонённые промисы и аварийные завершения, показывать системное оповещение и при необходимости POST отправлять JSON-отчёт на сервер.
errorReporting.url
"errorReporting": {
"url": "https://errors.example.com/report"
}
Если значение не задано, отчёты об ошибках работают в режиме «только оповещение»: необработанные ошибки по-прежнему вызывают системное оповещение, но отчёт не отправляется.
Описание схемы отчёта см. в разделе «Отчёты об ошибках».
Рабочий каталог и ресурсы
Скомпилированный двоичный файл запускается с текущим рабочим каталогом, установленным в cwd пользователя, а не в каталоге, содержащем двоичный файл. Если приложению нужно находить файлы относительно самого себя (результаты сборки фреймворка, статические ресурсы), используйте import.meta или собственные средства поиска фреймворка; не рассчитывайте на Deno.cwd().
В проектах на основе фреймворков это обрабатывается автоматически: обнаруженные результаты сборки (.next/, dist/, _fresh/, .output/ и т. д.) встраиваются в виртуальную файловую систему двоичного файла и извлекаются при запуске, чтобы код фреймворка находил их относительно собственного рабочего каталога.
Проверка
Конфигурация проверяется в начале deno desktop:
-
backendдолжно соответствовать одному из перечисленных значений. - По указанным путям к значкам должны находиться существующие файлы.
- Пути вывода должны быть доступны для записи.
-
release.baseUrlдолжно быть корректным URL. - Записи
app.deepLinksдолжны содержать допустимые незарезервированные схемы URL.
Ошибки указываются с адресом проблемного места deno.json.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/desktop/configuration