Как связать / включить зависимости в библиотеках Angular-CLI - PullRequest
0 голосов
/ 13 ноября 2018

У меня проблемы с упаковкой зависимостей.

Мой библиотечный пакет обернут вокруг компонентов @ angular / material.

Я был удивлен, обнаружив, что везде, где я устанавливал свой библиотечный пакет, также просили установить @ angular / material или получитьошибка.

Должен быть лучший способ сделать это правильно?Я хотел бы, чтобы мой пакет был автономным и «включал» angular / материал при его установке.

Я прочитал, что добавление следующего к пакету библиотеки.json

 "bundledDependencies": [
    "@angular/material"
  ]

должнорешить эту проблему, но она, похоже, не работает, или, по крайней мере, должен быть еще один шаг, потому что тогда я вижу эту ошибку при установке моего пакета:

отсутствует связанная зависимость"@ угловой / материала".Об этом следует сообщить сопровождающему пакета.

Эта ошибка действительно приводит к тому, что я просто что-то упускаю, и это будет работать, как я и ожидал.Чего мне не хватает?

Я не смог найти никакой информации об этой ошибке.

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

Мы не хотим полагаться на предупреждающее сообщение от peerDependencies.

Кажется, что это должно быть возможным шаблоном, может кто-нибудь объяснить суть связанных с ним зависимостей

1 Ответ

0 голосов
/ 14 ноября 2018

bundledDependencies используется для указания пакетов, которые вы включаете в свой пакет. Если вы используете это, то вы должны предоставить эти пакеты в вашем комплекте. Они распространяются и устанавливаются как часть вашего пакета, а не как отдельные установки зависимостей. Смотри: http://npm.github.io/using-pkgs-docs/package-json/types/bundleddependencies.html.

Альтернативой, и я думаю, что правильный подход для библиотек, является использование peerDependencies (это то, что я использую). Это позволяет пользователю библиотеки решить, хотят ли они установить эти пакеты через package.json своего приложения, и предупредит о «неудовлетворенных зависимостях одноранговых узлов» при установке вашего пакета, но не установит их. Это полезно, потому что позволяет пользователю контролировать версию зависимого пакета. Angular Material задает все различные @angular зависимости, которые ему нужны как peerDependencies (см. https://github.com/angular/material2/blob/master/src/lib/package.json).

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

...