【发布时间】:2022-08-17 15:35:33
【问题描述】:
我正在使用带有 nx 的 monorepo,其结构如下:
apps
| - my-app
libs
| - common
| - my-client
这些库在部署后以@my-org/my-client 和@my-org/common 的名称在npm 上发布,而我正在定义以下路径别名(在tsconfig.conf 上)以直接在my-app 代码上使用它们:
\"paths\": {
\"@my-org/my-client\": [\"libs/my-client/src/index.ts\"],
\"@my-org/common\": [\"libs/common/src/index.ts\"]
}
问题是my-app 正在使用依赖于@my-org/common 的外部包another-external-package(它正在使用其发布的版本导入)。
当我在my-app 上导入@my-org/common 时,似乎它正在获取对等依赖项@my-org/common(来自another-external-package),而不是来自tsconfig.conf 上定义的别名。
这只发生在我们为生产而构建而不是在开发环境中时。
关于如何告诉 nx/tsc 选择库而不是已发布包的任何想法?
-
这似乎是包管理器(npm/yarn)或 webpack 问题。 tsconfig.paths 中的别名仅适用于您的 IDE,在构建时通过 ts-loader 包进行解析,以防您使用 webpack,这是应用程序的默认 nx 配置。我对 webpack 不够熟悉,但我会寻找一种方法来提示它在构建时采用正确的包。
标签: typescript npm nestjs nrwl-nx nrwl