组件库中的Angular 7包依赖关系

时间:2019-03-05 17:30:52

标签: angular angular-components angular-library

我已经在Angular 7中创建了一个组件库,该组件库将被移植到其他应用程序,并且那些应用程序将能够使用这些组件。

我遇到了一个问题,其中在组件库中安装了一个角度库,但没有与组件库捆绑在一起以供另一个应用程序使用,而我最终遇到了这样的错误...

Module not found: Error: Can't resolve '@angular/material' in
 'C:\Source\MappingServices\GIT\repos\SomeFolderStructure\node_mo
dules\@myComp\components\fesm5'


ERROR in ./node_modules/@myComp/components/fesm5/components.js

我如何捆绑这样的库,以便它们与组件库一起使用而无需额外安装即可使用?

更新 Package.json文件

{
"name": "@myComp/components",
"version": "0.0.1",
"whitelistedNonPeerDependencies": [
"agm","material", "ol"
],
"dependencies": {
"@angular/common": "^6.0.0-rc.0 || ^6.0.0",
"@angular/core": "^6.0.0-rc.0 || ^6.0.0",
"@agm/core": "^1.0.0-beta.5",
"ol": "^5.3.1"
},
"peerDependencies": {
"@angular/common": "^6.0.0-rc.0 || ^6.0.0",
"@angular/core": "^6.0.0-rc.0 || ^6.0.0",
"@agm/core": "^1.0.0-beta.5",
"ol": "^5.3.1"
},
"publishConfig": {
"registry": "http://someTFSdirectory"
}
}

1 个答案:

答案 0 :(得分:0)

我猜您正在使用Angular CLI生成库,因此您的库文件夹中应该有一个package.json和一个ng-package.json

您必须在package.json内列出所有依赖项,以便NPM可以解决它们。您有三种选择:

dependencies:然后NPM在其他人使用您的库时自动安装它们。这里列出的依赖项也需要在ng-package.json"whitelistedNonPeerDependencies")内白名单

peerDependencies:然后您的库用户必须安装依赖项(将其添加到自己的package.json中)

bundledDependencies:然后在构建依赖项时将其与您的库捆绑在一起。不建议这样做!

查看您的package-json,您会发现@angular/material部分中缺少dependencies依赖性。这就是为什么在导入时会收到错误:NPM不知道必须安装它,因此不需要安装,因此在运行时没有@angular/material