Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Monorepo中的对等依赖_Javascript_Npm_Yarnpkg_Lerna_Monorepo - Fatal编程技术网

Javascript Monorepo中的对等依赖

Javascript Monorepo中的对等依赖,javascript,npm,yarnpkg,lerna,monorepo,Javascript,Npm,Yarnpkg,Lerna,Monorepo,当monorepo中的包具有对等依赖关系时,在开发过程中应该如何使这些依赖关系对它们可用 例如,位于/packages/namespace/alpha/的包在其package.json中可能具有devDependency的样式化组件 可能的选择: 声明与开发人员依赖项相同的依赖项(不必要的重复和维护成本) 在monorepo的路由package.json中安装软件包(使用纱线链接时可能出现模块分辨率问题) 我正在将Lerna用于Thread工作区。Thread工作区应该安装根节点\u模块中几乎所

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

例如,位于
/packages/namespace/alpha/
的包在其
package.json
中可能具有
devDependency
样式化组件

可能的选择:

  • 声明与开发人员依赖项相同的依赖项(不必要的重复和维护成本)

  • 在monorepo的路由
    package.json中安装软件包(使用
    纱线链接时可能出现模块分辨率问题)


  • 我正在将Lerna用于Thread工作区。

    Thread工作区应该安装根
    节点\u模块中几乎所有依赖的内容。这就是您在选项2中描述的内容

    因此,基本上它在大多数情况下都应该工作。问题可能发生在某些工具依赖或存在某些依赖等情况下

    选项1是一种非常常见的方法,但正如您所说,它增加了维护成本。您可能需要跟踪这些依赖项,并将它们标记为外部依赖项,以避免将它们包含在lib的内置版本中

    有一些可能的解决方法。例如,使用TS
    路径
    选项。您可以在不使用typescript的情况下执行相同的操作,例如,创建React应用程序。 或者,您可以使用类似的工具,根据
    对等依赖项自动添加外部,这样您也可以安全地将它们列为devDependies

    这两种选择都被认为是合法的

    另一个选择是安装对等依赖项,目前还没有“官方”解决方案。有一个包可以与
    npm
    warn
    一起使用。有一个用于
    warn
    的包。有一个计划将此功能添加到其中,实际上npm在v3之前就已经完成了

    总而言之,没有一刀切的解决方案,你需要了解你想要得到什么,你可以为此牺牲什么

    更新(2020年12月14日)-NPM 7安装对等DEP

    正如我在最初的回答中提到的,NPMV7在默认情况下实现了安装对等依赖项。有关更多详细信息,请参阅