gpt4 book ai didi

javascript - Monorepo 中的对等依赖关系

转载 作者:行者123 更新时间:2023-12-01 14:59:53 24 4
gpt4 key购买 nike

当 monorepo 中的包具有对等依赖项时,在开发过程中应该如何使这些依赖项对它们可用?

例如 /packages/namespace/alpha/ 的包裹可能有 devDependencystyled-components在其package.json .

可能的选项:

  • 声明与开发依赖项相同的依赖项(不必要的复制和维护成本)。
  • 在 monorepo 的路径中安装软件包 package.json (使用 yarn link 时模块分辨率的潜在问题。

  • 我将 Lerna 与 yarn 工作区一起使用。

    最佳答案

    Yarn 工作区应该在根目录 node_modules 中安装几乎所有东西依靠node's module resolution algorithm .这就是您在选项 2 中描述的内容。
    所以,基本上它应该在大多数情况下工作。当某些工具依赖 its own resolution logic 时,可能会出现问题。或者有different versions一些依赖等等。
    选项 1 是一种非常常见的方法,但正如您所说,它增加了维护成本。您可能需要跟踪此类依赖项并将它们标记为外部,以避免将它们包含在 lib 的构建版本中。
    有可能的解决方法。例如,Angular suggests使用 TS paths选项。你可以在没有 typescript 的情况下做同样的事情,例如 Create React App using jsconfig.json .
    或者你可以使用类似于 rollup plugin 的东西根据 peerDependencies 自动添加外部组件,因此您也可以安全地将它们列为 devDependies。
    这两个选项在 this lerna issue 中都被认为是合法的
    另一种选择是安装您的对等依赖项,就目前而言,没有“官方”解决方案。有install peers clinpm 一起使用的软件包和 yarn .有一个hot feature request对于 yarn .计划将此功能添加到 npm v7 ,实际上 npm 在 v3 之前就已经做到了。
    总结一下,没有一种万能的解决方案,您需要了解自己想要得到什么以及可以为此牺牲什么。
    更新(2020 年 12 月 14 日)— NPM 7 安装对等部门
    正如我在最初的答案中提到的,npm v7 默认实现了安装对等依赖项。请引用RFC了解更多详情。

    关于javascript - Monorepo 中的对等依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58027193/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com