首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >peerDependency正在覆盖NX库

peerDependency正在覆盖NX库
EN

Stack Overflow用户
提问于 2022-07-31 21:21:17
回答 2查看 298关注 0票数 3

我在nx中使用了一个monorepo,它的结构如下:

代码语言:javascript
复制
apps
  | - my-app
libs
  | - common
  | - my-client

在以@my-org/my-client@my-org/common的名称部署之后,将在npm上发布lib,而我正在定义以下路径别名(在tsconfig.conf上)以直接在my-app代码上使用它们:

代码语言:javascript
复制
"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-app时,它似乎是在获取对等依赖@my-org/common (来自another-external-package),而不是从定义在tsconfig.conf上的别名。这种情况只发生在我们为生产而构建时,而不是在dev环境中。

对于如何告诉nx/tsc选择库而不是已发布的软件包,有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2022-08-17 07:35:33

我认为您可以使用包覆盖

尝试将其添加到您的package.json文件中:(不确定我是否正确地将它放在您的情况下)

代码语言:javascript
复制
  "overrides": {
    "@my-org/my-client": {
      "@my-org/common": "$@my-org/common"
    }
  }

在这里解释:https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides

如果需要对依赖项的依赖项进行特定更改,例如用已知的安全问题替换依赖项的版本,用叉替换现有的依赖项,或者确保在任何地方都使用相同版本的包,则可以添加覆盖。

重写提供了一种方法,可以将依赖树中的包替换为另一个版本,或者完全替换另一个包。这些更改的范围可以是特定的,也可以是所需的模糊的。

票数 0
EN

Stack Overflow用户

发布于 2022-08-18 00:53:00

通过将tsconfig.conf上标记的依赖项直接添加到package.json中,我找到了一个修复方法,如下所示:

代码语言:javascript
复制
"dependencies": {
    "@my-org/common": "file:./libs/common"
}

这使得my-app使用本地版本的@my-org/common,而不是使用通过@my-org/my-client解决的对等依赖。

正如@EcksDy所提到的:

tsconfig.paths中的别名仅用于您的IDE。解决方案发生在构建时,通过ts加载程序包,以防您使用webpack,这是默认的nx配置的应用程序。

@johey:这不是要覆盖在依赖项中调用的包,而是要求应用程序使用本地版本,而不是发布的版本:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73186987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档