Javascript 如何基于可重用组件分离大型React代码库?

Javascript 如何基于可重用组件分离大型React代码库?,javascript,reactjs,architecture,npm,Javascript,Reactjs,Architecture,Npm,我目前有一个大型的通用react应用程序。我想从应用程序中提取一些组件,并将它们放在单独的回购中,以便其他团队/项目可以导入它们并在其前端使用它们 例如:包含组件的存储库1 存储库2是一个可以从存储库1导入的web应用程序 我有一些顾虑: 我想限制重复/未使用代码的数量 与导入单个lodash函数的方式类似(从'node_modules/lodash/lib/..'导入forEach,而从'lodash'导入{forEach}) 我希望组件能够独立导入,而不必捆绑所有组件 我不想重复依赖项 如果

我目前有一个大型的通用react应用程序。我想从应用程序中提取一些组件,并将它们放在单独的回购中,以便其他团队/项目可以导入它们并在其前端使用它们

例如:包含组件的存储库1

存储库2是一个可以从存储库1导入的web应用程序

我有一些顾虑: 我想限制重复/未使用代码的数量

与导入单个lodash函数的方式类似(从'node_modules/lodash/lib/..'导入forEach,而从'lodash'导入{forEach})

我希望组件能够独立导入,而不必捆绑所有组件

我不想重复依赖项

如果我的所有组件都构建为单个文件,并且它们都需要React,那么我将把React捆绑到我的代码库中的次数与我拥有的组件数量相同



为我导出的每个组件创建一个单独的生成文件是一个好主意吗?如果我不导入生成文件,我是否必须明确地告诉我的主存储库中的webpack查看我的组件的节点模块?

据我所知,您的React组件现在位于项目的不同子文件夹中。为什么不将它们移动到分离Git回购并使用将这些回购连接回您的应用程序

您还可以制作React组件npm包并使用npm安装它们


每个使用组件的应用程序都需要将其包含在其构建链中。我认为组件不应该真正构建自身。

据我所知,您的React组件现在位于项目的不同子文件夹中。为什么不将它们移动到单独的Git repo中,并使用将这些repo连接回您的应用程序

您还可以制作React组件npm包并使用npm安装它们


每个使用组件的应用程序都需要将其包含在其构建链中。我认为组件不应该真正构建自身。

听起来你可以使用一个工具来帮助捆绑多个软件包,如knit或lerna。谢谢,看起来很有趣。据我所知,它基本上做的事情与NPM+3和peerDepend相同ency尝试解决?听起来你可以使用一个工具来帮助捆绑多个包,如knit或lerna,谢谢,看起来很有趣。据我了解,它基本上做的事情与NPM+3和PeerDependence尝试解决的事情相同?如果我将每个组件作为一个单独的NPM包安装,我主要关心的是确保每个组件在这些包中,有一个包没有将react和其他共享库作为依赖项安装在它们自己的node_模块子目录中。看起来npm3+和/或PeerDependence声明可以防止this@Jon是的,有一种重复数据消除机制。它在NPM2中就有,但我记得它在默认情况下并没有打开。如果我安装每个c组件作为一个单独的NPM包,我主要关心的是确保这些包中的每一个都不包括react和其他共享LIB作为依赖项安装在它们自己的节点模块子目录中。看起来npm3+和/或PeerDependence声明可以防止this@Jon是的,有一种重复数据消除机制。它就在那里在NPM2中,但正如我记得的那样,默认情况下没有打开。