как правильно установить зависимости npm? - PullRequest
0 голосов
/ 16 февраля 2019

Я хочу добавить свой угловой модуль в npm, и я сделал это.Но я все еще не понял, как правильно установить зависимость npm.

Это зависимость углового модуля от @angular/cdk @angular/material @angular/core he.Я заметил, что angular-cli автоматически установил свойство @angular/core @angular/common in peerDependencies.Я думал, что @angular/cdk и т. Д. Такие же, как @angular/core, поэтому я добавляю @angular/cdk @angular/material @angular/core в peerDependencies.Но angular-cli предупреждает меня «Не удается найти модуль @ angular / material», когда я создал новый проект и ввел этот модуль в проект.Наконец, я исправляю проблему, добавляя @angular/cdk @angular/material @angular/core he в dependencies свойство.Но я все еще не понимаю, почему его следует добавить к dependencies, а не peerDependencies.Более того, я должен добавить его в dependencies или просто добавить его в README.md, чтобы позволить другому разработчику самостоятельно управлять зависимостями в проекте.

Project Github Address

1 Ответ

0 голосов
/ 16 февраля 2019

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

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

Напротив, когда вы определяете зависимость от равноправного узла, вы говорите: «Эй, эта библиотека не будет работать, если у вас не установлен материал cdk, и я буду использовать любую версию».Это гораздо лучше, потому что им не нужно устанавливать его дважды или беспокоиться о конфликте разных версий.

Все, что вы перечислили, должно быть в peerDependencies, единственное, что я бы добавил в зависимости, это вещи, которыеявляются ядром вашей библиотеки, и вы не ожидаете, что разработчики-потребители уже установили их в свой проект.Поскольку они используют то, что выглядит как плагин для материального проекта, то имеет смысл сделать это.Хотя сейчас, когда я посетил ваш репо, я не вижу упоминаний о пользовательском интерфейсе материала.Вы хотите быть очень явными в зависимости от пира, необходимой вашей библиотеке.

...