Angular CLI 6:如何在主应用程序中使用库子项目?

时间:2018-05-21 20:08:09

标签: javascript angular typescript angular6

我有一个Angular 6项目,它由一个主应用程序组成,另一个子项目是一个库。我正在尝试从主应用程序中使用这个库,而我似乎无法让它工作。

tsconfig.json中,我有以下paths配置:

"paths": {
  "@my-company/my-package/*": "dist/my-package/*"
}

然后在主应用程序中,我像这样导入库:

import { ButtonModule } from '@my-company/my-package/button';

然而,当我构建主应用程序时,我遇到了大量关于无法找到模块的错误。对于上面的import语句,我会收到此错误:

Module not found: Error: Can't resolve '/Users/jattardi/code/myproject/dist/my-package/button'

但是,如果我检查dist/my-package目录,肯定会有一个包含类型定义的button目录。

我的导入有子路径的原因,例如@my-company/my-package/button代替@my-company/my-package而不仅仅是python -m pip install <module_to_install> 。不确定这是可能的。由于这是一个Angular 6 / ng-packagr生成的版本,我是否会失去这种能力?

2 个答案:

答案 0 :(得分:0)

尝试在主应用程序中使用时遇到了同样的错误。我的答案不会解决这个问题,因为我试图获取我的延迟加载模块,我移动到新的Angular6库,工作。

我能够将我的库项目发布到npm,并将其作为npm依赖项在主应用程序中使用。例如:@ santony / ngx-material。在解决之前,您可以做一个解决方法。

答案 1 :(得分:0)

对于那些仍然面临此问题的人,ng-packagr的文档中提供了“操作方法”:

https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md

基本上,

您要做的就是创建一个package.json文件,并将其放在要创建辅助入口点的位置。 my_package/testing/package.json的内容可以很简单:

{
  "ngPackage": {}
}

而且,在开发应用程序中,我已经将路径引用添加到辅助端点,因此它起作用:

"@my-company/my-library/another": [
  "dist/my-library/another"
]