Javascript Monorepo中的对等依赖
当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模块中几乎所
/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在默认情况下实现了安装对等依赖项。有关更多详细信息,请参阅