Пытаюсь удалить @angular/анимации, но диалог материалов требует этого

#angular #angular-material #angular-animations

Вопрос:

Я понял, что использую только @angular/animations в одном месте в своем проекте, поэтому я заменил его чисто css-решением и удалил его из своего проекта вместе с BrowserAnimationsModule .

Я получил эту ошибку:

 An unhandled exception occurred: The target entry-point "@angular/material/dialog" has missing dependencies:
 - @angular/animations
 

У меня сложилось впечатление, что если бы библиотека, которую я использовал, имела зависимость, это обрабатывалось бы в их файле package.json, и что мне не нужно добавлять все зависимости зависимостей в мой проект.

Есть идеи, чего мне здесь не хватает?

Ответ №1:

Вы все делаете правильно.

Дело в том, что некоторые пакеты не хотят переносить свои зависимости в ваш проект, потому что, скорее всего, они у вас уже будут. Таким образом, они объявляют их таковыми peer dependency и полагаются на вас.

Вы можете найти некоторые объяснения в официальной документации npm относительно зависимости от одноранговых узлов.

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

Комментарии:

1. Спасибо за это, хотя я немного смущен — как вы говорите, скорее всего, это будет в моем проекте, ну а что, если нет? Должна ли она просто сломаться или не должна ли она вернуться к установке в качестве зависимости от этой библиотеки?

2. @BenTaliadoros Когда вы устанавливаете что-то, что требует одноранговой зависимости, npm автоматически проверит, существует ли это. Если да — он будет устанавливаться в автоматическом режиме, если НЕТ — вы должны увидеть предупреждение в консоли: this project requires .... я никогда не видел никакого предупреждения в случае удаления одноранговой зависимости позже.

3. Но, пожалуйста, не доверяйте мне, просто попробуйте установить зависимости еще раз с помощью удаленной @angular/анимации. Вы должны увидеть предупреждение.