Переход с 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 читает это поле напрямую. Монорепозиторий такого вида работает без изменений:
{
"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, правила работы с файлами блокировки и минимальный возраст зависимостей.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/migrate/migrate_from_yarn