【问题标题】:Angular CLI 6: How to consume a library sub-project in the main application?Angular CLI 6:如何在主应用程序中使用库子项目?
【发布时间】:2018-05-21 20:08:08
【问题描述】:

我有一个 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 是让它可以摇树。不确定这是可能的。由于这是 Angular 6/ng-packagr 生成的构建,我会失去这种能力吗?

【问题讨论】:

    标签: javascript angular typescript angular6


    【解决方案1】:

    尝试在主应用程序中使用时,我遇到了同样的错误。我的答案不会解决这种情况,因为我试图让我的延迟加载模块,我搬到新的 Angular6 库中工作。

    我能够将我的库项目发布到 npm 并在主应用程序中作为 npm 依赖项使用它。例如:@santony/ngx-material。可能是一种解决方法,您可以这样做,直到问题得到解决。

    【讨论】:

      【解决方案2】:

      对于那些仍然面临这个问题的人,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"
      ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 2019-07-27
        相关资源
        最近更新 更多