1

语境:

我们正在创建一个由多个应用程序门户组成的新解决方案(因为没有更好的术语),每个门户都需要利用一个基础项目,该基础项目已经包含我使用的一些专有代码,以及与此相关的任何新功能到那个门户。我们当前的应用程序还有很多不足之处,并且随着我们重新开始,我们希望以正确的方式进行。(因此我想稍微掩饰一下我的想法)

在此处输入图像描述

在此处输入图像描述

我想了一些可能的方法来解决这个问题。每个都有它的优点和缺点。

1. GIT Fork A 基础项目:

这似乎是最直接的方式。拥有一个 PortalCore 项目,然后让每个项目以仅下游的方式对其进行分叉。

  • 缺点:如果基础发生变化,我们需要手动更新所有依赖项目。
  • Pro:最初更容易实施,我相信会减少一些其他更“费力”的任务。(例如,单个构建文件将随我们的构建要求随每个新门户一起传播。)

流程将是:

Fork PortalCore > Core 将通过 GIT master 更新保持最新

2.基础项目NPM包:

这似乎是一条理想的路线,因为每次部署时,我们的基础包/项目的最新版本都将随每个门户一起安装。

  • 缺点:根据我的研究,我们似乎无法npm在 npm 文件夹之外安装软件包(这与我的问题有关)。如果我们希望它位于项目根目录中,我们需要通过其他方式共享构建文件。
  • Pro:更新会随着构建过程自动推出

流程将是:

新项目 > 添加 Portal Core npm > 制作自定义构建任务,或从某个中央仓库获取 > 将通过 npm install > Gulp Build 保持最新

3.以上结合

有一个仅包含我们的基本npm模块的 git 项目,并构建配置。然后,构建可以处理诸如将文件移动到正确位置(例如 node_models -> root)之类的事情

流程将是:

Fork PortalCore > Core 将通过npminstall > Gulp Build保持最新


问题:

  1. 有没有办法让一个npm包(或另一个包管理器)将文件安装到特定位置?(我已经检查了npm论坛,这似乎是一个死胡同。但我想我会在这里碰碰运气)
  2. 我们是在对它进行弗兰肯斯坦吗?我们不想创造一个新的怪物。这种逻辑是否有意义 ITO 创建的东西在设计上应该是模块化的,但更容易维护。大男孩是怎么做到的……如果他们这样做了?
4

1 回答 1

0

这个问题的答案最终比我预期的要简单得多:

  • 将所有共享服务放在单独的通用 NPM 包中(通用组件、共享/通用服务等)

  • 并创建一些帮助初始项目初始化的 yeoman 生成器。(唯一的缺点是有人需要维护它们,如果出现一些新的核心依赖......但这就是开发生活。)

于 2017-03-04T11:51:00.143 回答