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