语境:
我们正在创建一个由多个应用程序门户组成的新解决方案(因为没有更好的术语),每个门户都需要利用一个基础项目,该基础项目已经包含我使用的一些专有代码,以及与此相关的任何新功能到那个门户。我们当前的应用程序还有很多不足之处,并且随着我们重新开始,我们希望以正确的方式进行。(因此我想稍微掩饰一下我的想法)
我想了一些可能的方法来解决这个问题。每个都有它的优点和缺点。
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 将通过
npm
install > Gulp Build保持最新
问题:
- 有没有办法让一个
npm
包(或另一个包管理器)将文件安装到特定位置?(我已经检查了npm
论坛,这似乎是一个死胡同。但我想我会在这里碰碰运气) - 我们是在对它进行弗兰肯斯坦吗?我们不想创造一个新的怪物。这种逻辑是否有意义 ITO 创建的东西在设计上应该是模块化的,但更容易维护。大男孩是怎么做到的……如果他们这样做了?