Spec-Zone.ru › Deno 2

deno compile, автономные исполняемые файлы

Использование в командной строке

deno compile [OPTIONS] [SCRIPT_ARG]...

Компилирует заданный скрипт в автономный исполняемый файл.

deno compile --allow-read --allow-net jsr:@std/http/file-server
deno compile --output file_server jsr:@std/http/file-server

Любые флаги, влияющие на поведение во время выполнения, будут применены к результирующему бинарному файлу.

Это позволяет распространять приложение Deno на системы, на которых Deno не установлен. Внутри происходит создание уменьшенной версии среды выполнения Deno вместе с вашим кодом JavaScript или TypeScript.

Поддержка кросс-компиляции для различных архитектур целевых платформ обеспечивается флагом --target. При первом вызове с помощью deno будет загружен соответствующий бинарный файл и кэширован в $DENO_DIR.


Параметры проверки типов

--check

Устанавливает поведение проверки типов. По умолчанию этот подкоманда проверяет локальные модули, поэтому добавление --check избыточно. Если значение «all» указано, будут включены и удаленные модули. В качестве альтернативы можно использовать подкоманду «deno check».

--no-check

Пропуск проверки типов. Если значение «remote» указано, диагностические ошибки удаленных модулей будут игнорироваться.

Параметры управления зависимостями

--cached-only

Требуется, чтобы удаленные зависимости уже были кэшированы.

--frozen

Возвращает ошибку, если файл блокировки устарел.

--import-map

Загрузка файла карты импорта из локального файла или удаленного URL.

--lock

Проверка указанного файла блокировки. (Если значение не указано, используется по умолчанию "./deno.lock").

--no-lock

Отключение автоматического обнаружения файла блокировки.

--no-npm

Отказ от разрешения модулей npm.

--no-remote

Отказ от разрешения удаленных модулей.

--node-modules-dir

Устанавливает режим управления модулями node_modules для пакетов npm.

--reload

Короткий флаг: -r

Перезагрузка кэша исходного кода (перекомпиляция TypeScript) без значения. Перезагрузить все jsr:@std/http/file-server,jsr:@std/assert/assert-equals. Перезагружает определенные модули npm: Перезагрузить все модули npm npm:chalk Перезагрузить определенный модуль npm.

--vendor

Включает/выключает использование локальной папки vendor для удаленных модулей и папки node_modules для пакетов npm.

Параметры

--allow-scripts

Разрешение выполнения скриптов жизненного цикла npm для заданных пакетов. Примечание: скрипты будут выполняться только при использовании папки node_modules (--node-modules-dir).

--cert

Загрузка сертификата авторитета из файла в формате PEM.

--config

Короткий флаг: -c

Настройка различных аспектов deno, включая TypeScript, проверки, и форматирования кода. Обычно конфигурационный файл называется deno.json или deno.jsonc и автоматически обнаруживается; в этом случае этот флаг не требуется.

--env-file

Загрузка переменных среды из локального файла. Используется только первая переменная среды с заданным ключом. Существующие переменные среды процесса не перезаписываются, поэтому, если переменные с одинаковыми именами уже существуют в среде, их значения будут сохранены. В случае многократных объявлений одной и той же переменной среды в вашем файле .env применяется первое встреченное. Это определяется порядком файлов, которые вы передаете в качестве аргументов.

--ext

Установка типа содержимого предоставленного файла.

--location

Значение globalThis.location, используемое некоторыми веб-API.

--no-code-cache

Отключение функции кэширования кода V8.

--no-config

Отключение автоматической загрузки конфигурационного файла.

--seed

Установка значения для генератора случайных чисел.

--v8-flags

Для просмотра списка всех доступных флагов используйте --v8-flags=--help. Флаги также могут быть заданы через переменную среды DENO_V8_FLAGS. Любые флаги, заданные с помощью этого флага, добавляются после переменной среды DENO_V8_FLAGS.

Параметры компиляции

--icon

Устанавливает значок исполняемого файла в Windows (.ico).

--include

Включает дополнительный модуль или файл/папку в скомпилированный исполняемый файл. Используйте этот флаг, если динамически импортируемый модуль или основной модуль веб-воркера не загружается в исполняемом файле, или для встраивания файла или папки в исполняемый файл. Этот флаг можно передавать несколько раз, чтобы включить несколько дополнительных модулей.

--no-terminal

Скрытие терминала в Windows.

--output

Короткий флаг: -o

Выходной файл (по умолчанию $PWD/).

--target

Архитектура целевой операционной системы.

Флаги

Как и при deno install, флаги среды выполнения, используемые для выполнения скрипта, должны быть указаны во время компиляции. Это включает флаги разрешений.

deno compile --allow-read --allow-net jsr:@std/http@1.0.0/file-server

Аргументы скрипта могут быть частично встроены.

deno compile --allow-read --allow-net jsr:@std/http@1.0.0/file-server -p 8080

./file_server --help

Кросс-компиляция

Вы можете выполнить кросс-компиляцию бинарных файлов для других платформ, используя флаг --target.

# Cross compile for Apple Silicon
deno compile --target aarch64-apple-darwin main.ts

# Cross compile for Windows with an icon
deno compile --target x86_64-pc-windows-msvc --icon ./icon.ico main.ts

Поддерживаемые целевые платформы

Deno поддерживает кросс-компиляцию для всех целевых платформ независимо от платформы хоста.

ОС Архитектура Целевая платформа
Windows x86_64 x86_64-pc-windows-msvc
macOS x86_64 x86_64-apple-darwin
macOS ARM64 aarch64-apple-darwin
Linux x86_64 x86_64-unknown-linux-gnu
Linux ARM64 aarch64-unknown-linux-gnu

Значки

Добавить значок к исполняемому файлу можно, используя флаг --icon при целевой платформе Windows. Значок должен быть в формате .ico.

deno compile --icon icon.ico main.ts

# Cross compilation with icon
deno compile --target x86_64-pc-windows-msvc --icon ./icon.ico main.ts

Динамические импорты

По умолчанию статически анализируемые динамические импорты (импорты, у которых строковая литерал внутри выражения вызова import("...")) будут включены в выходной файл.

// calculator.ts and its dependencies will be included in the binary
const calculator = await import("./calculator.ts");

Но нестатически анализируемые динамические импорты не будут:

const specifier = condition ? "./calc.ts" : "./better_calc.ts";
const calculator = await import(specifier);

Для включения нестатически анализируемых динамических импортов укажите флаг --include <path>.

deno compile --include calc.ts --include better_calc.ts main.ts

Включение файлов или папок данных

Начиная с Deno 2.1, вы можете включать файлы или папки в исполняемый файл, указав их с помощью флага --include <path>.

deno compile --include names.csv --include data main.ts

Затем читайте файл относительно пути к каталогу текущего модуля через import.meta.dirname:

// main.ts
const names = Deno.readTextFileSync(import.meta.dirname + "/names.csv");
const dataFiles = Deno.readDirSync(import.meta.dirname + "/data");

// use names and dataFiles here

Обратите внимание, что это в настоящее время работает только для файлов на файловой системе, а не для удаленных файлов.

Рабочие процессы

Аналогично нестатически анализируемым динамическим импортам, код для рабочих процессов по умолчанию не включается в скомпилированный исполняемый файл. Есть два способа включить рабочие процессы:

  1. Используйте флаг --include <path> для включения кода рабочего процесса.
deno compile --include worker.ts main.ts
  1. Импортируйте модуль рабочего процесса с помощью статически анализируемого импорта.
// main.ts
import "./worker.ts";
deno compile main.ts

Подпись кода

macOS

По умолчанию на macOS скомпилированный исполняемый файл будет подписан с помощью временной подписи, что эквивалентно запуску codesign -s -:

$ deno compile -o main main.ts
$ codesign --verify -vv ./main

./main: valid on disk
./main: satisfies its Designated Requirement

Вы можете указать идентификатор подписи при подписи исполняемого файла так же, как вы бы это сделали с любым другим исполняемым файлом macOS:

codesign -s "Developer ID Application: Your Name" ./main

Для получения дополнительной информации о подписи кода и нотаризации на macOS, обратитесь к официальной документации.

Windows

В Windows скомпилированный исполняемый файл может быть подписан с помощью утилиты SignTool.exe.

$ deno compile -o main.exe main.ts
$ signtool sign /fd SHA256 main.exe

Недоступно в исполняемых файлах

  • Веб-хранилище API

© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/compile

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API