typescript - 如何组织一个项目来共享代码?

标签 typescript git module version-control

我正在我构建的通用核心之上编写一些应用程序,这是一种我自己的框架。

我想链接这个应用程序,所以如果我更新公共(public)核心中的文件,每个应用程序也会更新。

所以我这样组织代码。我创建了一个 github 项目,在主分支中有公共(public)核心文件,然后每个分支都是一个不同的应用程序。因此,如果我更新公共(public)核心,我可以创建从主分支到应用程序分支的 pull 请求,公共(public)核心将被更新。

像这样一切正常,唯一的问题是当我遇到特殊情况时。

如果我必须在应用程序分支中编辑一个公共(public)核心文件,因为例如我需要针对该应用程序的不同行为,我希望有机会在内部隔离和编辑公共(public)核心的单个文件应用程序分支,但其他文件应该像以前一样更新。

相反,显然在这种情况下我无法再 merge pull 请求,因为应用程序分支中的文件与公共(public)核心中的文件不同。

我的项目通常是这样组织的:

core/...
features/...
public/...
main.ts

corepublic 文件夹包含公共(public)核心文件,通常这些文件不会更改。所以我分支了公共(public)核心 repo,我在文件夹中添加了功能模块,然后我从 main.ts(它是一个 typescript 网络应用程序)加载了所有模块(核心和功能)。在公用文件夹中,我有不应更改太多的支持文件。使用这种架构,一切正常,直到我需要为一个应用程序更改公用文件夹中的文件。如果我更改它,我将无法再 merge 分支并从公共(public)核心文件接收更新。

我之前尝试过子模块的方法,但我一点都不满意。

目标是能够从公共(public)核心文件中获得持续更新,即使其中一些文件在本地发生了变化并且应该是“未跟踪”或类似的东西。

您对如何解决这个问题或以更好的方式组织代码有什么想法吗?

非常感谢

最佳答案

我认为您的场景非常适合 monorepo。执行此操作的方法是使用工作区。我一直在为此使用 yarn 工作区( yarn1yarn2 ),最近 npm also introduced workspaces ,但我最近没有测试过它们。这也可以使用 lerna .

基本思想是你可以在同一个 repo 中有多个 npm 项目,你可以直接链接它们。它类似于安装依赖项,唯一的区别是此依赖项是本地的。所以你可以有这样的结构:

  • 应用/应用1
  • 应用/应用2
  • 库/核心
  • 库/功能

然后在应用程序的 package.json 文件中,您可以直接添加对要包含的核心/功能(或任何其他)库的引用。

关于typescript - 如何组织一个项目来共享代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70337541/

相关文章:

mysql - 将 mod_mysql、mod_xml 和 mod_zlib 添加到 apache

typescript - 自动推断变量属于键集中

当没有类型注释时,Typescript 会提示有区别的联合类型

git - 如何在多个 Linux 服务器上分发 GIT 对象?

ios - Xcode - 单元测试 - 为 iOS 12 编译,但模块的最小部署目标为 13

ruby-on-rails - 何时考虑在 Rails 应用程序中创建自己的 Ruby 模块?

数据源更改时 Angular 2 子组件不更新

javascript - TypeScript 无法正确编译

Git 多次提交 : Jenkins Pipeline

github/git Checkout 在 Windows 上返回 'error: invalid path'