Deno 2.8: новые возможности, команды и руководство по переходу
Глубокое погружение · 26 мая 2026

Deno 2.8: что нового в
крупнейшем минорном релизе

Deno 2.8 вышел 22 мая 2026 года — и это самый значительный минорный релиз в истории Deno. Шесть новых подкоманд, npm как менеджер пакетов по умолчанию, 74% совместимости Node.js API, import defer и многое другое. Всё, что нужно знать.

Олег Максимов 26 мая 2026 14 мин чтения

Введение

22 мая 2026 года команда Deno выпустила Deno 2.8 — и если вы не обращали внимания на Deno со времён запуска 2.0, сейчас самое время присмотреться. Этот релиз — крупнейшее минорное обновление рантайма, добавляющее шесть новых подкоманд CLI, делающее npm разрешением пакетов по умолчанию, достигающее впечатляющих 74% совместимости Node.js API (теперь опережая Bun) и представляющее import defer для ленивой загрузки модулей.

Выбираете ли вы рантайм для нового проекта или рассматриваете миграцию существующего Node.js-приложения — Deno 2.8 меняет правила игры. Это руководство охватывает каждую крупную возможность с практическими примерами кода, сравнением с Node.js 26 и Bun, а также честными советами по миграции.

Характеристика Deno 2.8 Node.js 26 Bun
Дата выхода 22 мая 2026 Апр 2026 Постоянно
Совместимость Node.js 74% NEW 100% (родная) ~68%
Синтаксис импорта npm Голые спецификаторы NEW Родной (CJS/ESM) Голые спецификаторы
TypeScript Встроен (TS 6.0.3) NEW Через ts-node/tsx Встроен
Ленивые импорты import defer NEW Dynamic import() Нет
Модель безопасности На основе разрешений Без песочницы На основе разрешений
Встроенные команды 6 новых (всего 20+) NEW через npx/пакеты Встроенные
Движок V8 V8 14.9 NEW V8 14.x JavaScriptCore

1. Шесть новых подкоманд

Главная особенность Deno 2.8 — добавление шести новых подкоманд CLI, превращающих Deno из рантайма в полноценный инструментарий разработки. Каждая решает конкретную проблему современной JavaScript-разработки.

deno audit fix — автоисправление уязвимых зависимостей

deno audit (вышел в Deno 2.6) сообщает об уязвимостях в npm-пакетах вашего дерева зависимостей. Однако ручное исправление каждой было утомительным. Новая подкоманда deno audit fix автоматизирует процесс — она обновляет затронутые пакеты до ближайшей исправленной версии, удовлетворяющей вашим версионным ограничениям.

$ deno audit fix
╭ body-parser уязвим к отказу в обслуживании
│ Серьёзность: высокая
│ Пакет:       body-parser
│ Уязвим:     <1.20.3
╰ Инфо:       https://github.com/advisories/GHSA-qwcr-r2fm-qrc7

╭ Express.js Open Redirect в некорректных URL
│ Серьёзность: средняя
│ Пакет:       express
│ Уязвим:     <4.19.2
╰ Инфо:       https://github.com/advisories/GHSA-rv95-896h-c2vc

Найдено 2 уязвимости
Серьёзность: 0 низких, 1 средняя, 1 высокая, 0 критических

Исправлена 1 уязвимость:
  body-parser 1.19.0 -> 1.20.3

1 уязвимость не может быть исправлена автоматически:
  express (требуется мажорное обновление до 5.0.0)

Пакеты, требующие мажорного обновления, перечисляются отдельно — вы решаете, стоит ли ослабить ограничения. Такое же поведение доступно как deno audit --fix. Эта функция закрывает пробел, для которого раньше требовались npm audit fix или внешние инструменты вроде Snyk, и является сильным дополнением для команд, обеспокоенных безопасностью цепочек поставок.

deno bump-version — интеллектуальное управление версиями

Управление номерами версий в проекте (особенно в workspace) — удивительно кропотливая задача. deno bump-version решает её элегантно:

$ deno bump-version patch         # 1.4.6 -> 1.4.7
$ deno bump-version minor         # 1.4.6 -> 1.5.0
$ deno bump-version major         # 1.4.6 -> 2.0.0
$ deno bump-version prerelease    # 1.4.7-0 -> 1.4.7-1

В workspace запуск deno bump-version patch в корне применяет одинаковое увеличение к каждому пакету, обновляя соответствующие версионные ограничения jsr: и import map, чтобы перекрёстные ссылки между пакетами оставались согласованными.

Без аргумента увеличения workspace-режим переключается на анализ Conventional Commits: сканирует коммиты между базовой ссылкой и текущей веткой, автоматически выводя увеличение для каждого пакета.

$ deno bump-version --base=main --dry-run

deno ci — воспроизводимая установка для CI

CI-скриптам и Dockerfile нужно одно: «дай мне то, что в lockfile, и громко ошибись, если что-то не так». deno ci делает именно это:

$ deno ci

Ошибка, если deno.lock отсутствует, удаляет существующий node_modules и запускает установку с --frozen — lockfile должен точно соответствовать конфигурационному файлу.

deno pack — сборка Deno-проектов для npm

deno pack объединяет функциональность tsc + npm pack в одной команде. Он собирает Deno или JSR проект в npm-архив одной строкой:

$ deno pack
# Результат: ./deno-project-1.0.0.tgz

Это революция для авторов библиотек. Вы пишете код в TypeScript-native среде Deno и публикуете в npm без инструментов сборки.

deno transpile — транспиляция TypeScript/JSX

$ deno transpile src/**/*.ts --out-dir dist/

В отличие от deno bundle (который создаёт один файл), deno transpile сохраняет структуру файлов в выходной директории.

deno why — объяснение дерева зависимостей

$ deno why express
[email protected]
├── [email protected]
├── [email protected]
├── [email protected]
│   └── [email protected]
│       └── [email protected]
└── ...

Помогает выявлять ненужные или дублирующиеся зависимости — небольшое, но полезное улучшение качества жизни.

2. npm как разрешение пакетов по умолчанию

Это крупный эргономический сдвиг. В Deno 2.8 голые спецификаторы вроде "express" или "lodash" теперь резолвятся в npm автоматически. Префикс npm: больше не нужен:

// До Deno 2.8
import express from "npm:express";

// Deno 2.8 — голый спецификатор резолвится в npm
import express from "express";

Deno проверяет npm-реестры как цель разрешения по умолчанию наравне с URL-импортами и import maps. Префикс npm: всё ещё работает для явного использования, и вы по-прежнему можете закреплять версии через import maps. Но для повседневной разработки Deno теперь неотличим от Node.js при получении пакетов из npm.

3. Совместимость Node.js API выросла до 74%

Deno 2.0 имел примерно 42% совместимости Node.js API. Deno 2.8 почти удваивает этот показатель до 74%, опережая Bun (~68%).

Скачок покрывает многие наиболее востребованные модули:

4. import defer — ленивая загрузка модулей

// Этот модуль НЕ загружается при запуске — только при вызове parseMarkdown()
import defer { parseMarkdown } from "./markdown-parser.ts";

export function renderPost(markdown: string, template: string) {
  const html = parseMarkdown(markdown); // загружается здесь
  return renderTemplate(html, template);
}

В отличие от динамического import() (асинхронный, возвращает Promise), import defer синхронный — модуль загружается при первом обращении к любому его экспорту, прозрачно для вызывающего кода.

5. TypeScript 6.0.3 «из коробки»

Deno 2.8 поставляется с TypeScript 6.0.3, предоставляя разработчикам немедленный доступ к новейшим возможностям TypeScript без конфигурации.

6. Улучшения производительности

7. Самодостаточные скомпилированные бинарники

$ deno compile --self-extract main.ts
# Результат: ./main — меньший размер загрузки

8. Улучшения OpenTelemetry

Более полная автоматическая инструментация: HTTP-серверы, клиенты баз данных, экспортёр OTLP «из коробки».

9. Движок V8 14.9

Более быстрая компиляция WebAssembly, улучшенная сборка мусора, новые возможности JavaScript и оптимизация под современное оборудование.

10. Хуки загрузчика модулей

// deno.json
{
  "hooks": {
    "resolve": "./resolve-hook.ts"
  }
}

// resolve-hook.ts
export function resolve(specifier: string, context: ResolveContext) {
  if (specifier.startsWith("my-company:")) {
    return { url: `https://registry.my-company.com/${...}`, format: "module" };
  }
  return undefined;
}

Руководство по миграции: с Node.js на Deno 2.8

Шаг 1: Аудит зависимостей

Запустите deno audit для вашего package.json, чтобы проверить, какие пакеты работают нативно. Большинство популярных фреймворков (Express, Koa, Hono, Zod, Prisma) работают хорошо.

Шаг 2: Удалите префиксы npm:

Голые спецификаторы теперь разрешаются в npm автоматически.

Шаг 3: Добавьте разрешения

Модель безопасности Deno требует явных разрешений. Для разработки подойдёт --allow-all.

# Установка Deno 2.8
curl -fsSL https://deno.land/install.sh | sh
deno upgrade

# Проверка совместимости проекта
deno check main.ts

# Запуск с разрешениями
deno run --allow-read --allow-net --allow-env main.ts

# Использование в CI
deno ci

Стоит ли переходить?

Deno 2.8 — убедительный выбор для:

Используете Deno? Смотрите мои услуги веб-разработки

Часто задаваемые вопросы

Что нового в Deno 2.8?
Deno 2.8 — крупнейший минорный релиз: 6 новых подкоманд (deno audit fix, deno bump-version, deno ci, deno pack, deno transpile, deno why), npm как разрешение пакетов по умолчанию, совместимость Node.js API выросла с 42% до 74%, import defer для ленивой загрузки модулей, TypeScript 6.0.3, V8 14.9, самодостаточные бинарники через deno compile, улучшения OpenTelemetry и хуки загрузчика модулей.
Как Deno 2.8 сравнивается с Node.js 26?
Deno 2.8 теперь достигает 74% совместимости Node.js API — огромный скачок с 42% в Deno 2.0, теперь опережая Bun (~68%). В сочетании с разрешением npm по умолчанию большинство проектов Node.js могут работать в Deno с минимальными изменениями. Ключевые отличия: встроенный TypeScript, import defer для холодного старта и модель безопасности на основе разрешений. Для детального разбора того, что предлагает сам Node.js 26 — Temporal API, V8 14.6 и Undici 8 — читайте моё полное руководство по Node.js 26.
Какие 6 новых подкоманд появились в Deno 2.8?
Deno 2.8 добавляет: deno audit fix (автоисправление уязвимых npm-пакетов), deno bump-version (управление версиями с Conventional Commits), deno ci (frozen-установка для CI), deno pack (сборка Deno/JSR проектов в npm-архивы), deno transpile (транспиляция TypeScript/JSX) и deno why (объяснение дерева зависимостей).
Поддерживает ли Deno 2.8 npm-пакеты без префикса npm:?
Да. Голые спецификаторы вроде import express from "express" теперь резолвятся в npm автоматически. Префикс npm: больше не нужен. Deno проверяет npm-реестры как цель разрешения по умолчанию наравне с URL-импортами и import maps.
Что такое import defer в Deno 2.8?
import defer — это новая возможность для ленивой загрузки модулей. Модули, объявленные с import defer, не загружаются и не выполняются при первоначальном запуске — они загружаются при первом использовании. В отличие от динамического import(), он синхронный. Это значительно улучшает производительность холодного старта для приложений со множеством зависимостей, особенно в serverless-среде.
Стоит ли переходить с Node.js на Deno 2.8?
Deno 2.8 — убедительная альтернатива для новых проектов, особенно тех, где важны встроенный TypeScript, разрешения безопасности и современные инструменты. Для существующих проектов Node.js улучшенная 74% совместимость и npm-first разрешение делают миграцию проще, чем когда-либо. Однако решение зависит от ваших конкретных зависимостей — проверьте базу совместимости Deno перед миграцией.
Какую версию TypeScript использует Deno 2.8?
Deno 2.8 поставляется с TypeScript 6.0.3 «из коробки», предоставляя разработчикам немедленный доступ к новейшим возможностям TypeScript без дополнительной настройки или конфигурации.

Начните работу с Deno 2.8

deno upgrade

Затем выполните deno --version чтобы убедиться, что у вас 2.8, и начинайте изучать новые подкоманды. Официальная документация на docs.deno.com содержит подробные руководства по каждой новой возможности.

Если вы оцениваете рантаймы для нового проекта или рассматриваете миграцию и хотите получить опытную оценку, свяжитесь со мной. Я создаю production-приложения на различных JavaScript-рантаймах более 20 лет и помогу принять правильное решение для ваших задач.

Связаться

Нужна помощь с выбором рантайма?

Оцениваете Deno, Node.js или Bun для следующего проекта? Я помогу принять правильное техническое решение. Бесплатная консультация.