Существует ли эквивалент пряжи для "npm dedupe"?

Просто попробовал пряжу и действительно очень быстро. После запуска yarn в консоли с загруженным package.json он установил все. Затем я побежал npm dedupe, ожидая, что ничего не произойдет, поскольку Yarn настолько оптимизирован, но он удалил тонну вещей. Есть ли какая-то пряжа, эквивалентная npm dedupe?

Дополнение:

Как отмечалось в моем комментарии ниже, я подумал, что возможно, yarn install --flat может быть эквивалентом npm dedupe, поскольку документация по пряжи описывает его как "устанавливая одну и только одну версию пакета". Поэтому я играл с --flat и там было несколько замечаний:

  • Он предложит вам выбрать, какую версию пакета установить, когда дерево приводит к запросам более чем одной версии. Я мог представить, что это одна из задач для более крупных проектов. Я только что выбрал последнюю версию для каждого пакета, на который мне было предложено, и, как вы можете себе представить, попытка запустить приложение привела к ошибкам cannot find module.
  • Я выполнил npm dedupe после выполнения yarn install --flat, и это все равно привело к тонне абзацев. Это было для меня неожиданностью.

Итак, я понимаю, что npm dedupe делает какую-то другую магию под капотом, и я просто наивна в отношении процессов, которые мне не нужны. Возможно, лучше всего оставить только дерево и забыть о --flat и dedupe вообще.

Ответ 1

Цитируется из документов пряжи:

Команда дедупликации не нужна. yarn install будет уже дедупликации.

https://yarnpkg.com/lang/en/docs/cli/dedupe/

Ответ 2

Кажется, что даже сейчас Yarn не справляется с задачей минимизации дублирующихся зависимостей. Запуск yarn --flat заставляет существовать только одну версию зависимости, даже если они могут быть несовместимыми, так что они не идеальны. Вы можете использовать пакет с yarn-deduplicate, чтобы свести к минимуму количество дубликатов, но при этом разрешить некоторые в тех случаях, когда нет пересекающихся требований. yarn-deduplicate также имеет --fail вариант, который будет возвращать статус не равен нулю (неудачу). Это может быть полезно для запуска на CI, чтобы гарантировать, что любой, кто изменяет зависимости, не вводит новые дубликаты.