Запуск кода
Deno запускает JavaScript и TypeScript напрямую (без этапа сборки и конфигурации) в песочнице безопасности, которая предоставляет доступ только по вашему запросу. На этой странице рассказывается, как именно запускается ваш код: о разрешениях, способах запуска, режиме наблюдения и задачах.
Запуск файла
Укажите Deno файл. TypeScript запускается без изменений:
deno run main.ts
deno run задаётся явно, но для файла или задачи можно опустить run — Deno разберётся сам:
deno main.ts # same as `deno run main.ts`
Разрешения: безопасность по умолчанию
Это отличие от Node. Код работает в песочнице, не имея доступа к сети, файловой системе, окружению или дочерним процессам, пока вы не предоставите его. Если скрипт попытается прочитать файл без разрешения, он остановится и запросит его либо завершится с ошибкой, если запросы отключены.
Предоставляйте доступ с помощью флагов --allow-* (у каждого есть краткая форма) и ограничивайте его строго необходимым:
deno run --allow-net main.ts # network (-N)
deno run --allow-read=./data main.ts # filesystem (-R), scoped
deno run -N=api.example.com -E main.ts # combined, short forms
Используйте --deny-*, чтобы задать исключения, или -A / --allow-all, чтобы полностью отключить песочницу. Это удобно в доверенной среде, но лишает вас гарантий безопасности. Список всех флагов см. в разделе «Разрешения», а описание принципов их работы — в разделе «Безопасность».
Передача аргументов скрипту
Аргументы для вашего скрипта указываются после его имени; Deno передаёт их в Deno.args:
console.log(Deno.args);
$ deno run main.ts arg1 arg2 arg3
[ "arg1", "arg2", "arg3" ]
Если аргументов больше, чем просто список, разберите их с помощью parseArgs из jsr:@std/cli или parseArgs из node:util.
Порядок аргументов и флагов
Всё, что указано после имени скрипта, является аргументом скрипта, а не флагом среды выполнения Deno. Это распространённая причина путаницы, поэтому размещайте флаги среды выполнения перед именем скрипта.
Это может привести к следующей ошибке:
# Good. We grant net permission to net_client.ts.
deno run --allow-net net_client.ts
# Bad! --allow-net was passed to Deno.args, throws a net permission error.
deno run net_client.ts --allow-net
Запуск из URL или stdin
Deno может запускать код напрямую из URL (удобно для разовых инструментов и установщиков) или из stdin:
deno run https://example.com/script.ts
echo 'console.log(1 + 1)' | deno run -
Удалённый код работает в песочнице, как и любой другой: у него нет разрешений, пока вы их не предоставите.
Перезапуск при изменениях в режиме наблюдения
Добавьте --watch, и Deno будет перезапускать программу при каждом изменении файла, от которого она зависит. Без nodemon и дополнительных зависимостей:
deno run --watch main.ts
deno test, deno fmt и другие команды тоже поддерживают --watch. Подробнее о том, за какими файлами ведётся наблюдение, исключении путей и горячей замене модулей см. в разделе «Режим наблюдения и HMR».
Запуск задач проекта
Определяйте повторно запускаемые команды в deno.json и запускайте их с помощью deno task — аналога npm run:
{
"tasks": {
"dev": "deno run --watch --allow-net main.ts",
"start": "deno run --allow-net main.ts"
}
}
deno task dev
Задачи могут запускать другие задачи, задавать переменные окружения и работать на разных платформах.
Быстрый запуск кода
Для экспериментов вычислите выражение напрямую или откройте REPL:
deno eval "console.log(Deno.version)"
deno repl
Что ещё можно сделать
-
Создание HTTP-сервера. Обрабатывайте запросы с помощью соответствующего веб-стандартам API
Deno.serve. - Веб-разработка. Создавайте приложения с помощью Fresh, Next.js, Astro и веб-стандартных API.
-
API веб-платформы.
fetch,Request/Response, потоки, Web Crypto и другие глобальные объекты браузера, реализованные в Deno. - Отладка. Подключите Chrome DevTools или отладчик в редакторе.
- Справочник по deno run. Подробное описание всех флагов.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/run