Angular 库 ng-packagr 不会用相对路径替换 tsconfig 路径

Angular library ng-packagr doesn't replace tsconfig paths with relative paths

我有一个 Angular 工作区 (v10.0.2),其中包含一个库和一个应用程序(用于测试库)。

在我的projects/libname/src/lib/tsconfig.lib.json里面我有一些路径:

"baseUrl": "./src",
"paths": {
  "@lib/*": ["lib/*"]
}

我是这样使用的:

import { DateUtils } from '@lib/utils/date.utils';

我收到此警告:

WARNING: No name was provided for external module '@lib/utils/date.utils' in output.globals – guessing 'date_utils'

AFAIK,这意味着 tsconfig 路径未被替换,因此 ng-packagr 将其视为外部模块。当我查看 dist 文件夹时,我看到 '@lib/utils/date.utils' 仍然存在并且没有被相对路径替换。如果我忽略警告,当我提供测试应用程序时,它会给出此错误:

Cannot find module '@lib/utils/date' or its corresponding type declarations.

我搜索了很多,阅读了很多问题和 SO 问题,但没有找到解决方案。

我找到的唯一解决方案是选择一个前缀,以便在 node_modules

中安装软件包时您的路径将完全相同

例如,如果您的包名称是 xyz,您的 tsconfig 将是:

"paths": {
  "xyz/*": ["lib/*"]
}

我强烈推荐使用子条目,因为它不仅解决了这个问题,而且还支持 tree shaking。 This article 会有帮助