我已经在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"
}
}
答案 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
。