Мы работаем над общей библиотекой виджетов @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
.