Spec-Zone.ru › Deno 2

Переход с npm

npm — это менеджер пакетов, а не среда выполнения, поэтому большая часть того, что вы «переносите», — это конфигурация, а не код. Deno полностью совместим с package.json: он читает существующий манифест, устанавливает и разрешает те же npm-зависимости и запускает ваши скрипты. В большинстве случаев достаточно указать Deno на существующий проект npm — и всё заработает.

Для начала вам не нужно менять среду выполнения. Самый простой шаг — использовать Deno исключительно как более быстрый и безопасный менеджер пакетов для приложения, которое вы по-прежнему запускаете с Node: deno install читает ваш package.json, разрешает те же пакеты и создаёт обычный каталог node_modules, поэтому приложение продолжает работать в Node точно так же, как и раньше. Затем вы можете запускать скрипты package.json с помощью deno task и перейти на другую среду выполнения, когда будете готовы. Переход также можно отменить: если вас что-то не устроит, удалите deno.lock и снова запустите npm install.

Запуск проекта

Установите зависимости и запустите точку входа:

›_
cd my-npm-app
deno install
deno run main.js

deno install читает существующий package.json и разрешает те же npm-пакеты, например npm install. Он создаёт каталог node_modules и собственный deno.lock.

При первом запуске deno install, если deno.lock ещё нет, Deno создаёт его на основе существующего package-lock.json: закреплённые версии и хеши целостности переносятся без изменений, поэтому при переходе не произойдёт неожиданного обновления пакетов. После этого Deno поддерживает deno.lock и не изменяет package-lock.json, так что это не затронет коллег, которые ещё не перешли на Deno. Добавьте deno.lock в систему контроля версий, когда убедитесь, что всё работает.

Скрипты, определённые в package.json, запускаются с помощью deno task — аналога npm run:

›_
deno task start

Если вы также переходите с запуска приложения на Node на запуск в Deno, сразу заметите одно отличие: по умолчанию Deno работает в песочнице. При первом обращении программы к сети, файловой системе или окружению Deno запросит разрешение. Чтобы поведение соответствовало Node, сразу предоставьте все разрешения с помощью deno run -A main.js, а затем при необходимости ограничьте их флагами. См. раздел Безопасность и разрешения.

Краткая справка по переходу с npm на Deno

Зависимости

npm Deno
npm install deno install
npm install <pkg> deno add <pkg>
npm install -D <pkg> deno add -D <pkg>
npm uninstall <pkg> deno remove <pkg>
npm update deno update
npm outdated deno outdated
npm ci deno ci
npm audit deno audit
npm explain <pkg> deno why <pkg>

Запуск и выполнение

npm Deno
node file.js deno file.js
npm run <script> deno task <script>
npx <pkg> dx <pkg>

Deno также включает форматтер и линтер, поэтому deno fmt и deno lint заменяют Prettier и ESLint без дополнительных зависимостей.

Рабочие пространства

npm хранит шаблоны рабочих пространств в package.json внутри workspaces, и Deno считывает это поле напрямую. Монорепозиторий, например, будет работать без изменений:

package.json
{
  "workspaces": ["packages/*"]
}

Пакеты ссылаются друг на друга через протокол workspace: в своих зависимостях package.json — точно так же, как в npm. Ничего преобразовывать не нужно. О том, как работает разрешение зависимостей, см. раздел Рабочие пространства.

На что обратить внимание

  • Скрипты жизненного цикла по умолчанию не запускаются. Если зависимость использует скрипт install или postinstall (собственные дополнения, сборки node-gyp), разрешите его для конкретного пакета с помощью deno install --allow-scripts=npm:<pkg> или управляйте разрешениями с помощью deno approve-scripts. Это настройка безопасности по умолчанию, а не отсутствие функции.
  • overrides. Закрепляйте транзитивную зависимость с помощью записи в карте импортов, а не поля overrides в package.json.
  • Структура node_modules. По умолчанию Deno использует изолированную структуру, похожую на pnpm: реальные файлы находятся в node_modules/.deno/, а пакеты доступны через символические ссылки. Инструменты, которым нужна плоская структура npm с подъёмом зависимостей, могут включить её с помощью "nodeModulesDir": "manual" и "nodeModulesLinker": "hoisted" в deno.json. См. справочник по каталогу node_modules.

Что дальше

  • Переход с Node.js. Если вы также меняете среду выполнения, здесь описаны CommonJS, разрешение ES-модулей и встроенные модули Node, поддерживаемые Deno.
  • Переход с pnpm и переход с Yarn. Те же команды Deno с пояснениями о формате рабочих пространств каждого инструмента.
  • Управление зависимостями. Подробное описание npm, JSR и рабочих процессов package.json.
  • Управление цепочкой поставок. deno audit, работа с lock-файлом и минимальный возраст зависимостей.

Последнее обновление: 25 июня 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/migrate/migrate_from_npm

Spec-Zone.ru

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