Автоматическая установка зависимостей угловой библиотеки - PullRequest
0 голосов
/ 02 декабря 2018

Мы работаем над общей библиотекой виджетов @acme/widget-collection, которая представляет собой коллекцию всех виджетов, разработанных внутри как отдельные модули - @acme/widget1, @acme/widget2 и т. Д.

Это должно позволить разработчикам, которым это необходимоиспользовать виджеты для простого импорта @acme/widget-collection вместо того, чтобы импортировать все виджеты отдельно.

Таким образом, библиотека с именем @acme/widget-collection импортирует @acme/widget1, @acme/widget2 и @acme/widget3 и, конечно же,затем экспортируйте их, чтобы они были доступны при импорте @acme/widget-collection.

В общей библиотеке мы определяем все виджеты как peerDependencies в package.json.

"peerDependencies": {
    "@acme/widget1": "^0.0.1",
    "@acme/widget2": "^0.0.1",
    "@acme/widget3": "^0.0.1"
  }

После импортабиблиотека @acme/widgets-collection в проект, при запуске или сборке проекта мы получаем следующую ошибку - error TS2307: Cannot find module @acme/widget1.

Если мы вручную установим зависимости, т.е. npm i @acme/widget1 @acme/widget2 @acme/widget3, тогда она будет работать нормально.

Однако мы стараемся избегать ручной установки всех зависимостей @acme/widget-collections, поскольку они продолжают изменяться, и мы хотим, чтобы npm устанавливал их автоматически.

Запуск npm i @acme/widget-collection, похоже, не влияет навысотой их.

Существует ли собственный способ установки зависимостей с помощью npm?

Если нет, следует ли устанавливать их с помощью ng-packagr непосредственно в папку @acme/widget-collection/node_modules?

ОБНОВЛЕНИЕ

Ввод зависимостей в виде "зависимостей" вместо "peerDependencies", кажется, устанавливает их автоматически при запуске npm i @acme/widget-collection, но я не уверен, что это рекомендуемый способ, так как большинствоугловые примеры, которые я видел, используют peerDependencies.Кажется, это работает:

"dependencies": {
        "@acme/widget1": "^0.0.1",
        "@acme/widget2": "^0.0.1",
        "@acme/widget3": "^0.0.1"
      }

И запуск npm i или npm i @acme/widget-collection установит @acme/widget1, @acme/widget2 и @acme/widget3 в папку node_modules.

...