背景:我公司的网络应用程序实际上是几个完全分离的应用程序,彼此影响很小。这就是为什么将它们保存在单个项目中没有任何意义的原因 - 所以我使用了单独的项目。但是,自从我开始在ReactJS中迁移和编写新应用程序(使用Webpack进行捆绑)后,我发现了许多重用机会,以避免代码重复,并避免在另一个应用程序已经获取后再次下载公共资源:
或许,毕竟,我应该选择monorepo?怎么样?
答案 0 :(得分:3)
您可以创建一个单独的项目my_modules
,它只是共享的公共包的清单。你有一个包含所有常用模块的package.json,还有一个index.js
,它有类似的功能:
import React, { Component, PropTypes } from 'react';
import moment from 'moment';
export { React, Component, PropTypes, moment };
然后,您将这个新的my_modules
项目发布到github,并在其他项目中安装 。
import { React, Component, PropTypes } from 'my-modules';
每次更改软件包时,都会增加版本,然后在项目中更新该版本(这仍然有点痛苦,但你可以使用像greenkeeper.io这样的东西来确保它们没有变得过时了。
同样地,你可以为你提到的其他事情做同样的事情,尽管你不想过分夸大它;您应该只共享不经常更改的标准资产,并将项目特定资产保留在自己的仓库中。
编辑:想要补充一点,对于React组件来说,这实际上是一种非常好的做法,因为它迫使你编写通用的独立组件。您可以使用React Storybook之类的东西来单独创建这些组件。您可以发布一个包含所有包的主包,单个组件作为包,或者介于两者之间的某个位置(例如,一个包中的所有Form组件)。无论哪种方式,他们仍然可以为了方便而共享回购。