automattic/stream-builder

一个从多种来源生成内容流的库。

0.11.1 2024-02-07 16:28 UTC

README

Coverage Status

StreamBuilder

StreamBuilder 是 Tumblr 定制的框架,我们用它来驱动仪表板和平台上大部分的内容流。其主要架构围绕着“内容流”。在我们的实现中,这些流可以是博客文章、你关注的博客列表、使用特定标签的文章或与搜索相关的文章。这些都是不同的流类型,可以混合在一起,根据某些标准进行筛选,根据相关性或参与可能性进行排序,等等。

在今天的 Tumblr 仪表板上,你可以看到来自你关注的博客的文章,与来自你关注的标签的文章混合,与博客推荐混合。每个都是独立的流,有自己的逻辑,但共享相同的框架。我们在一定的时间间隔内注入这些推荐,根据你屏蔽的人筛选文章,如果你启用了“优先显示最佳内容”设置,则根据相关性对文章进行排序。这些都是 StreamBuilder 为我们提供的功能示例。

此存储库中包含的内容

  • 今天在 Tumblr 上使用,为平台上几乎每个内容流提供动力的完整框架代码库。
  • 用于组合内容流、筛选、注入和排序的 YAML 语法。
  • 用于程序化组合、筛选、排序、注入和调试流的高级抽象。
  • 用于组合流的高级抽象,例如用于流内流的轮播。
  • 用于复杂流模板的基于游标的分页抽象。
  • 涵盖库公开接口和大部分底层代码的单元测试。

我们仍在努力添加更多文档和示例。有关更多信息,请参阅 Tumblr 工程博客上的公告文章

通过阅读 StreamBuilder 初学者指南 开始。我们还在 example/ 文件夹中提供了一个示例应用程序来尝试!

安装

StreamBuilder 预期 PHP 7.4+。

使用 Composer 安装 StreamBuilder,在你的项目中运行 composer require automattic/stream-builder

要访问示例和单元测试,请使用 composer require --prefer-source automattic/stream-builder 进行本地 git 克隆。

贡献

如果你想修改 StreamBuilder 代码,请

  1. 创建一个问题并描述你的想法或所需更改以供讨论。请提及 Automattic/stream-builders 以提高可见性和反馈。请在此步骤之前完成此操作!
  2. 创建一个 PR 并将 Automattic/stream-builders 添加到审阅者。请为您的更改编写单元测试或更新单元测试。
  3. 确保单元测试和 PHPCS 返回绿色(使用 make test 运行单元测试套件,使用 make cs 修复代码风格问题)。
  4. 添加关于您的更改和测试说明的描述。
  5. 如果您正在执行破坏性更改,请使其非常明确!从现有类更改命名空间?这是一个破坏性更改。更改游标的工作方式?这也是一个破坏性更改。

如果您正在执行重大重构、更改接口或任何其他破坏性更改,我们可能不会批准您的 PR。Tumblr 依赖于 StreamBuilder 来管理我们所有的内容流,除非有非常充分的理由,否则我们不想更改大量代码。

一旦批准,我们将合并您的PR并发布新版本。然后您可以在您的composer.json文件中更新版本号并部署您的更改。

所有破坏性更改都将作为主版本发布。如果您正在使用主版本,您需要更新您的代码以使用新接口。我们预计这种情况不会经常发生。

创建新版本

仅适用于具有仓库写权限的Automatticians

  1. 通过在此仓库中通过PR合并您的更改;请参阅贡献部分。
  2. 前往https://github.com/Automattic/stream-builder/releases并点击"草稿新版本"。
  3. 选择"选择标签"并创建新版本,如果您尚未创建。不是破坏性更改?通过0.0.1递增小版本。破坏性更改?通过0.1.0递增主版本。
  4. 请确保您正在针对main分支。
  5. 点击"生成发布说明"。这将生成自上次发布以来合并的所有PR列表。
  6. 点击绿色的"发布版本"按钮。

您是Tumblr员工吗?现在您可以更新任何内部composer.json文件中的版本号并部署您的更改。

经常发布!我们希望确保尽可能频繁地发布新功能和错误修复。我们不希望陷入一次发布大量更改的情况。