-1

我们有一个库项目,它位于我们发布到 npmjs 的 nx 项目中。它是从@angular/material 派生的组件的集合。该库已发布到 npmjs @vdlx/vdl-angular。

我们的构建使用 ng-packagr 根据它们的依赖关系依次构建每个组件。

当从 npm 安装到干净的 angular-cli 或 nx 项目中时,该ng build命令工作正常,但ng build --aot失败并出现错误。

在库 nx 项目中,使用 aot 构建应用程序可以正常工作,可能是因为它从源代码(与 node_modules 或项目 /dist 文件夹)获取组件。

ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'badge' in '/Users/dale.manthei/Downloads/angular-hrvy5y/src/app'

这是针对该问题的简单重新创建:https ://stackblitz.com/edit/angular-hrvy5y?file=src%2Fapp%2Fapp.module.ts 。

它肯定在 stackblitz 中有效。在本地安装项目并运行ng build --aot失败。

我怀疑我们的库中缺少 angular-cli 项目期望的东西。到目前为止,我一直在尝试使用消费应用程序,但那里没有乐趣。

欢迎提出建议。

4

1 回答 1

0

事实证明,问题出在已发布的库中。当我发布问题时,我无法判断问题是出在消费应用程序还是组件库上。原来是后者。

为了追踪它,我们手动生成了 ngfactory 文件以查找名称的简单badge.

使用它,我可以返回库 nx 项目中的组件 ng-packagr 配置。更改组件 package.json 中的名称以包含 npmj 命名空间以及库命名空间就可以解决问题。

有了这个,我们现在正在使用 ng-packagr 构建一个组件库,其中组件导入其他组件,就像https://github.com/nrwl/nx/issues/602中的这个问题一样。

于 2020-01-24T18:24:26.957 回答