Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Reactjs 你如何管理几个项目?_Reactjs_Webpack - Fatal编程技术网

Reactjs 你如何管理几个项目?

Reactjs 你如何管理几个项目?,reactjs,webpack,Reactjs,Webpack,背景:我公司的web应用程序实际上是几个完全分离的应用程序,它们之间的影响最小。这就是为什么把它们放在一个项目下没有任何意义,所以我使用单独的项目。然而,自从我开始在ReactJS中迁移和编写新的应用程序(使用Webpack进行捆绑)以来,我发现了许多重用的机会,以避免代码重复,并避免在另一个应用程序已经获取公共资源后再次下载它们: 我使用的是第三方npm模块的特定版本,因此没有理由一次又一次地捆绑它们,也没有理由多次将它们上传到服务器(对于所有项目)。 如何跨项目共享package.jso

背景:我公司的web应用程序实际上是几个完全分离的应用程序,它们之间的影响最小。这就是为什么把它们放在一个项目下没有任何意义,所以我使用单独的项目。然而,自从我开始在ReactJS中迁移和编写新的应用程序(使用Webpack进行捆绑)以来,我发现了许多重用的机会,以避免代码重复,并避免在另一个应用程序已经获取公共资源后再次下载它们:

  • 我使用的是第三方npm模块的特定版本,因此没有理由一次又一次地捆绑它们,也没有理由多次将它们上传到服务器(对于所有项目)。
    • 如何跨项目共享package.json固定版本
    • 您是将所有/组npm模块捆绑在一起还是单独捆绑?我想从服务器获取所有关于内部部署的信息
    • 如果您决定更新其中一个节点模块,您将采取哪些措施来确保不会忘记重新绑定节点模块
  • 类似的问题也适用于字体文件(将字体保留在服务器上,另一种字体用于图标)
  • 通用样式表
  • 通用JS代码-类似utils和common
  • 通用web.config配置
  • 常见图像(当前其中一些图像在不同的捆绑包中内联)
  • 最后,常见的组件,您如何共享它们?您是否使用单独的项目并发布到npm?符号链接

或者,说到底,我应该选择monorepo?如何创建?

您可以创建一个单独的项目,
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之类的工具单独创建这些组件。您可以发布一个包含所有包的主包、作为包的单个组件或介于两者之间的某个位置(例如,一个包中的所有表单组件)。无论如何,为了方便起见,他们仍然可以共享回购协议。

谢谢,您使用这种方法吗?你在开发模式下做什么?你考虑和莫诺瑞波一起去吗?有更具体的项目结构和npm脚本示例来实现这些目标吗?在工作中,我们专门将其用于React组件;我们没有各种各样的项目来保证共享其他资产。对于webpack配置、部署脚本等内容,如果存在一些重复,我认为这并不太糟糕,因为它们之间往往存在细微的差异,而类似的内容往往不会有太大的变化。整体回购似乎可以解决其中一些问题,但我对此没有任何经验。