Spec-Zone.ru › Deno 2

Переход с Yarn

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

Единственная функция Yarn, требующая отдельного решения, — Plug'n'Play, режим установки по умолчанию в Yarn Berry. Deno не использует PnP; он устанавливает настоящую директорию node_modules. Об этом рассказывается ниже.

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

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

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

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

При первом запуске deno install, если файла deno.lock еще нет, Deno создает его на основе файла yarn.lock Yarn Classic (v1), сохраняя закрепленные вами версии и хеши целостности. Yarn Berry (v2+) использует другой формат файла блокировки, из которого Deno не создает такой файл; в этом случае Deno заново разрешает диапазоны package.json, поэтому проверьте deno.lock перед фиксацией изменений.

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

›_
deno task start

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

Шпаргалка по переходу с Yarn на Deno

Зависимости

Yarn Deno
yarn install deno install
yarn add <pkg> deno add <pkg>
yarn add -D <pkg> deno add -D <pkg>
yarn remove <pkg> deno remove <pkg>
yarn up <pkg> deno update
yarn outdated deno outdated
yarn install --immutable deno ci
yarn npm audit deno audit
yarn why <pkg> deno why <pkg>

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

Yarn Deno
node file.js deno file.js
yarn <script> deno task <script>
yarn run <script> deno task <script>
yarn dlx <pkg> dx <pkg>

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

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

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

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

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

Plug'n'Play

В Yarn Berry по умолчанию используется Plug'n'Play: он пропускает node_modules и разрешает пакеты через сгенерированный файл .pnp.cjs. Deno не реализует PnP. При запуске deno install он создает обычную директорию node_modules, поэтому в Deno PnP вам не понадобится.

На практике это означает, что после перехода на Deno файлы и настройки, специфичные для PnP, больше не используются:

  • .pnp.cjs и .pnp.loader.mjs больше не используются. Deno разрешает зависимости из node_modules.
  • Настройки разрешения зависимостей .yarnrc.yml (nodeLinker, pnpMode, плагины) относятся только к Yarn и не переносятся.
  • Для yarn patch в Deno нет встроенного аналога. Включите зависимость в репозиторий или храните патч в форке.

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

  • Скрипты жизненного цикла по умолчанию не запускаются. Если зависимость использует скрипт install или postinstall (нативные дополнения, сборки node-gyp), разрешите его для конкретного пакета с помощью deno install --allow-scripts=npm:<pkg> или управляйте разрешениями с помощью deno approve-scripts. Это настройка безопасности по умолчанию, а не отсутствующая функция.

Продолжить

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

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

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

Spec-Zone.ru

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