Spec-Zone.ru › Deno 2

deno why

Команда deno why объясняет, почему тот или иной пакет находится в дереве зависимостей: она выводит все пути от прямых зависимостей проекта до указанного пакета. Команда читает файл блокировки, поэтому работает независимо от выбранного режима разрешения node_modules / npm и не обращается к сети.

Она дополняет команды deno add и deno remove: узнав, почему транзитивная зависимость находится в дереве, вы сможете решить, стоит ли удалять прямую зависимость, которая её добавляет.

Использование

›_
deno why <package>

<package> — это имя пакета npm или JSR, при необходимости зафиксированное с помощью @<version>:

Форма Значение
ms все версии ms в дереве
ms@2.0.0 только версия 2.0.0
@std/path пакет JSR по его краткому имени
jsr:@std/path пакет JSR по его полному спецификатору
npm:express принудительный поиск в npm (полезно при совпадении имён)

Примеры

Несколько путей к одному пакету

›_
$ deno why ms
ms@2.0.0
  npm:express@^4.18.0 > debug@2.6.9 > ms@2.0.0
  npm:express@^4.18.0 > body-parser@1.20.4 > debug@2.6.9 > ms@2.0.0
  npm:express@^4.18.0 > finalhandler@1.3.2 > debug@2.6.9 > ms@2.0.0

ms@2.1.3
  npm:express@^4.18.0 > send@0.19.2 > ms@2.1.3

Если один и тот же пакет встречается в нескольких версиях, каждая из них отображается в отдельном блоке — это удобно для поиска дублирующихся зависимостей, увеличивающих размер node_modules.

Фиксация конкретной версии

›_
$ deno why ms@2.1.3
ms@2.1.3
  npm:express@^4.18.0 > send@0.19.2 > ms@2.1.3

Пакеты JSR

›_
$ deno why @std/path
@std/path@1.0.6
  @scope/my-lib@^1.0.0 > @std/path@1.0.6
  @std/fs@^1.0.16 > @std/path@1.0.6

Пакеты JSR, добавленные в Deno 2.8+, разрешаются так же, как пакеты npm: можно передать краткое имя (@std/path) или полный спецификатор (jsr:@std/path).

Участники рабочей области

В рабочей области прямые зависимости каждого участника отображаются в выводе как корневые, поэтому можно точно определить, какой пакет добавил транзитивную зависимость.

Коды завершения

Код завершения Значение
0 Пакет найден в разрешённом дереве — выведен как минимум один путь зависимости.
Ненулевой Пакета нет в разрешённом дереве или аргумент имеет неверный формат.

Ненулевой код завершения позволяет легко настроить проверку CI, чтобы убедиться, что пакет не добавляется. Например, чтобы проверить, что left-pad никогда не попадает в дерево зависимостей:

›_
# fails the build if left-pad is reachable
! deno why left-pad

Распространённые ошибки

  • «Пакет не найден», хотя вы уверены, что он используется во время выполнения. deno why показывает, что находится в файле блокировки, а не то, что импортируется вашим кодом. Если вы добавили спецификатор npm: или jsr:, но ещё не запускали deno install (или любую подкоманду, которая разрешает зависимости), пакет пока не появится.
  • Разрешение зависимостей зависит от режима рабочей области. Пакет, используемый только одним участником рабочей области, может не отображаться при запуске команды из каталога другого участника, если в рабочей области используются отдельные файлы блокировки для каждого участника. Чтобы получить полную картину, запустите deno why из корневого каталога рабочей области.
Использование в командной строке:
deno why [OPTIONS] <package>

Показывает, почему пакет установлен, выводя цепочку зависимостей от прямых зависимостей проекта до указанного пакета.

deno why express

Показывает, почему установлена конкретная версия

deno why express@4.18.2

Параметры управления зависимостями

--frozen<BOOLEAN>необязательный

Завершает работу с ошибкой, если файл блокировки устарел.

--lock<FILE>необязательный

Проверяет указанный файл блокировки. (Если значение не задано, по умолчанию используется «./deno.lock».)

--no-lock

Отключает автоматический поиск файла блокировки.

Параметры

--env-file<FILE>необязательный

Загружает переменные среды из локального файла. Для каждого ключа используется только первая переменная среды. Существующие переменные среды процесса не перезаписываются, поэтому их значения сохраняются, если в среде уже есть переменные с такими именами. Если в файле .env несколько объявлений одной переменной среды, применяется первое из них. Порядок определяется последовательностью файлов, переданных в качестве аргументов.

Последнее обновление: 20 мая 2026 г.

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/why

Spec-Zone.ru

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