模块化交叉项目设计/创建可重复使用的可扩展基础
Modular cross project design / Create re-usable extensible base
上下文:
我们正在创建一个由多个应用程序门户组成的新解决方案(没有更好的术语),每个门户都需要利用一个基础项目,该项目已经包含我使用的一些专有代码,以及作为与该门户有关的任何新功能。我们当前的应用程序还有很多不足之处,并且随着我们重新开始,我们希望以正确的方式进行。 (因此我想稍微掩饰一下我的想法)
我想到了几种可能的方法来解决这个问题。各有利弊。
1. GIT 分叉基础项目:
这似乎是最直接的方式。拥有一个 PortalCore
项目,然后让每个项目以仅下游的方式对其进行分叉。
- 缺点:如果基础发生变化,我们将需要手动更新所有依赖项目。
- Pro:最初更容易实施,我相信会减少一些其他更多 "laborious" 任务。 (例如,将根据我们的构建要求随每个新门户一起移动的单个构建文件。)
流程为:
Fork PortalCore > Core will be kept up to date via updating via GIT master
2。基础项目 NPM 包:
这似乎是一条理想的路线,因为每次部署时,我们的基础 package/project 的最新版本将与每个门户一起安装。
- 缺点:根据我的研究,我们似乎无法在 npm 文件夹之外安装
npm
软件包(这与我的问题有关)。如果我们希望它位于项目根目录中,我们需要通过其他方式共享构建文件。
- 专业版:更新随构建过程自动推出
流程为:
New Project > Add Portal Core npm > Make custom build task, or grab
from some central repo > Will be kept up to date via npm install >
Gulp Build
3。以上组合
有一个 git 项目只包含我们的基础 npm
模块,并构建配置。然后构建可以处理诸如将文件移动到正确位置的事情(例如。node_modles -> root)
流程为:
Fork PortalCore > Core will be kept up to date via npm
install > Gulp Build
问题:
- 有没有办法让
npm
包(或其他包管理器)将文件安装到特定位置? (我已经查看了 npm
论坛,这似乎是一个死胡同。但我想我会在这里碰碰运气)
- 我们是在科学怪人吗?我们不想创造一个新的怪物。这种逻辑是否有意义 ITO 创造了一些在设计上应该是模块化的东西,但允许更容易维护。大男孩们如何做到这一点……如果他们这样做?
这个问题的答案最终比我预期的要简单得多:
将所有共享服务放在单独的公共 NPM 包中(公共组件、共享/公共服务等)
并创建一些 yeoman 生成器来协助初始项目
初始化。 (唯一的缺点是需要有人维护,
是否应该出现一些新的核心依赖项……但这就是开发人员的生活。)
上下文:
我们正在创建一个由多个应用程序门户组成的新解决方案(没有更好的术语),每个门户都需要利用一个基础项目,该项目已经包含我使用的一些专有代码,以及作为与该门户有关的任何新功能。我们当前的应用程序还有很多不足之处,并且随着我们重新开始,我们希望以正确的方式进行。 (因此我想稍微掩饰一下我的想法)
我想到了几种可能的方法来解决这个问题。各有利弊。
1. GIT 分叉基础项目:
这似乎是最直接的方式。拥有一个 PortalCore 项目,然后让每个项目以仅下游的方式对其进行分叉。
- 缺点:如果基础发生变化,我们将需要手动更新所有依赖项目。
- Pro:最初更容易实施,我相信会减少一些其他更多 "laborious" 任务。 (例如,将根据我们的构建要求随每个新门户一起移动的单个构建文件。)
流程为:
Fork PortalCore > Core will be kept up to date via updating via GIT master
2。基础项目 NPM 包:
这似乎是一条理想的路线,因为每次部署时,我们的基础 package/project 的最新版本将与每个门户一起安装。
- 缺点:根据我的研究,我们似乎无法在 npm 文件夹之外安装
npm
软件包(这与我的问题有关)。如果我们希望它位于项目根目录中,我们需要通过其他方式共享构建文件。 - 专业版:更新随构建过程自动推出
流程为:
New Project > Add Portal Core npm > Make custom build task, or grab from some central repo > Will be kept up to date via npm install > Gulp Build
3。以上组合
有一个 git 项目只包含我们的基础 npm
模块,并构建配置。然后构建可以处理诸如将文件移动到正确位置的事情(例如。node_modles -> root)
流程为:
Fork PortalCore > Core will be kept up to date via
npm
install > Gulp Build
问题:
- 有没有办法让
npm
包(或其他包管理器)将文件安装到特定位置? (我已经查看了npm
论坛,这似乎是一个死胡同。但我想我会在这里碰碰运气) - 我们是在科学怪人吗?我们不想创造一个新的怪物。这种逻辑是否有意义 ITO 创造了一些在设计上应该是模块化的东西,但允许更容易维护。大男孩们如何做到这一点……如果他们这样做?
这个问题的答案最终比我预期的要简单得多:
将所有共享服务放在单独的公共 NPM 包中(公共组件、共享/公共服务等)
并创建一些 yeoman 生成器来协助初始项目 初始化。 (唯一的缺点是需要有人维护, 是否应该出现一些新的核心依赖项……但这就是开发人员的生活。)