我们正在开发一个共享的小部件库@acme/widget-collection
,它是内部作为单独模块开发的所有小部件的集合 -@acme/widget1
等等@acme/widget2
。
这应该允许需要使用小部件的开发人员简单地导入@acme/widget-collection
而不需要单独导入所有小部件。
所以库命名为@acme/widget-collection
imports @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
文件夹中。