我们正在开发一个共享的窗口小部件库@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
文件夹中?
更新
在运行npm i @acme/widget-collection
时,自动将依赖项输入为“ dependencies”而不是“ peerDependencies”,但我不确定这是否是推荐的方式,因为我见过的大多数角度示例都使用{{ 1}}。
这似乎可行:
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
。