一个精心策划的关于 Monorepo 工具、软件和架构的列表。 架构。Monorepos 是单库的简称,是指 储存库,包含多个项目,通常相互关联。 彼此相关。
灵感来自于 vinta/awesome-python.
English | 简体中文
- baur 只在一个 monorepos 分支中构建已更改的应用程序,并管理构建工件
- Bazel 是谷歌的面向 monorepo 的构建系统。更多关于 Bazel 的信息:awesome-bazel
- Bit 是一个用于建立和管理具有多个组件的 JavaScript 项目的工具,并管理组件的依赖图。
- Bolt Pkg 是一个超级强大的 JavaScript 项目管理。
- Buck 是 Facebook 的面向 monorepo 的构建系统。
- drkns 是一个简单的、与语言无关的 monorepo 构建工具。
- Garment 是 Farfetch 的 monorepo 构建系统,具有集中和可定制的任务管理。
- GitLab CI 11.4 支持根据路径变化执行相应的操作。
- Lerna 是一个用于管理具有多个包的 JavaScript 项目的工具,建立在 Yarn 之上。
- MBT 是一个具有差异构建支持的构建工具。
- Nix 是一个具有远程缓存的软件包和发行版构建工具,主要由 NixOS 使用。
- Nx 是一个用于 TypeScript monorepos 的构建系统和一套 monorepo 管理工具。
- OAO 是一个基于 Yarn 的、有观点的 JavaScript monorepo 管理工具。
- Pants 是一个面向 monorepo 的构建系统,被 Twitter、Foursquare 和其他多家公司使用。
- Please 一个跨语言的构建系统,强调高性能、可扩展性和可复制性。
- pnpm 是一个 JavaScript 依赖性管理工具,通过一组专门的命令
pnpm multi
来支持 monorepos。 - Rush Stack 是一个面向大规模TypeScript monorepos 的工具系列,以Rush构建协调器为基础。
- Spago 是一个由Dhall和package-sets 支持的 PureScript 软件包管理器和构建工具。
- Symplify/MonorepoBuilder 是一个 PHP 的 monorepo 管理工具。
- Tainted 是一个确定哪些 Go 软件包需要在 monorepo 中重新构建的工具。
- Versio 根据 conventional commits 更新 monorepo 项目中的所有版本号,并可以生成更新日志和标签。
- Yarn 是一个 JavaScript 依赖性管理工具,通过工作空间支持 monorepo。
- Layer-pack 是一个 Webpack 插件,允许通过可继承的 npm 包/代码层和 es6 的 glob 导入来实现 monorepo 结构。
- Builder 是一个工具,它使得在 Node.js monorepo 中的各个项目之间运送相同的脚本成为可能。例如,跨项目共享构建和测试脚本。
- FBShipIt 是一个用 Hack 编写的库,用于将提交从一个仓库复制到另一个仓库。
- adeira/shipit 是 FBShipIt 的一个简化的 JavaScript 移植。
- Lank 是一个在 Node.js monorepo 中使用自动配置
NODE_PATH
而不是符号链接将包链接在一起的工具。Lank 还允许你在所有(或所有)软件包的子集上运行相同的命令。 - monorepo-run 是一个帮助程序的集合,用于在 yarn monorepo 的每个包中运行脚本,每个包有一个分离的窗格。
- oao
- Syncpack 允许在 Lerna Monorepos 中管理多个 package.json 文件。
- Ultra Runner 是一个智能脚本运行器和 Lerna、Pnpm、Rush 和 Yarn 的构建工具。脚本同时运行,使用依赖性拓扑结构。构建过程会跟踪文件的变化,并在可能的情况下被跳过。
- wsrun 允许在Yarn workspaces monorepo 的每个包中运行一个命令。
- 为什么谷歌将数十亿行代码存储在一个仓库中?
- monorepo 的优势和劣势。谷歌的一个案例研究
- 为什么你应该为你公司的所有项目使用一个单一的仓库?
- monorepo 的优势
- Monorepos 使内心的源泉变得鲜活起来
- 什么是 monorepo?(以及你应该使用它吗?)。
- 为 Semaphore-CI 用户提供 Monorepos 的持续集成。
- Git浅层克隆 让你只克隆部分的Git历史。
- Git filter-branch 让你重写版本库的历史和修剪分支。
- Git clone --single-branch
- Git sparse-checkout
- Git LFS 改善了 Git 中对大文件的处理。
- GVFS 虚拟化你的 git repo 下面的文件系统,这样 git 和所有工具看到的似乎是一个正常的 repo,但 GVFS 只在需要时下载对象。仅适用 于Windows。
- SlothFS 与 GVFS 类似,但只读。它在 Linux 和 macOS 上工作。
- git subtree 将你的项目中的子树合并和拆分到子项目中,然后再返回。从1.7版本开始成为 Git 的一部分。
- git subsplit 自动并简化了管理单向只读子树分割的过程。
- splitsh-lite 是一个非常快速的 git subtree 替代品,可以将项目中的子树分割成子项目。
- josh 是一个 git 服务器代理,可以实现仓库的即时虚拟化。
- go-diff 是一个方便的工具,可以分析哪些软件包由于变化而需要重建。
- mgt 是一个工具,通过定义如何重新映射仓库的文件,使多个仓库之间的双向同步变得容易。
- Atlassian 的 Git 中的 Monorepos 和如何在 Git 中处理大的仓库涵盖了 Git 的扩展选项。
- Pull Review Hubot 插件用于自动拉动评论,有很多配置选项。
- Rietveld 是谷歌的一个代码审查工具,被 Chromium 使用。
- API Extractor 是用来检测和审查 TypeScript 库的 API 签名的,也是用来发布多包 API 文档。
- 在 Jenkins 中使用 Bazel 的增量 CI,文章作者 Kristina Chodorow(Bazel团队)。
- bazel-travis 这是一个在 Bazel monorepo 中使用 Travis CI 的最小设置。
- buildpipe 是一个通过观察项目的变化来动态生成 Buildkite 管道的工具。
- Codefresh 是一个针对 Docker/Kubernetes 的 CI/CD 平台,具有原生 Monorepo 支持。
- 使用 Monorepos 进行微服务的 CI/CD 这是一篇描述 Shippable.com 构建的文章,旨在触发特定于实际被修改的微服务和依赖于它的服务的构建。
- Semaphore CI 是一个 CI/CD 平台,原生的 monorepo 支持。
- GitHub's CODEOWNERS GitHub 的 CODEOWNERS 可以限制谁可以批准影响 monorepo 某一特定部分的 pull request。
- Chromium 的 OWNERS 文件启发了 GitHub 的 CODEOWNERS。
- Write Guard 使用 GitHub 的 actions 来强制执行对 monorepo 项目的文件级写权限。
- CODEOWNERS 生成器 从子文件夹中的文件为你的 monorepo 生成一个 CODEOWNERS 文件。
- Foursquare的开源项目
- Stellar 的 Go monorepo
- Habitat 的 monorepo
- startup-os monorepo:谷歌开源工具(bazel等)在 monorepo 中的工作实例
- M3 monorepo - 分布式TSDB,聚合器和查询引擎,Prometheus Sidecar,度量衡平台
- Entria 的全栈式 Playground Monorepo
- Berty 的 monorepo - React-native 移动应用程序 + Golang 后端 + Gomobile bridge + iOS & Android 原生驱动 + Protobuf
- NixOS 的软件包和模块的 monorepo 可用于增量构建和部署 Linux 机器。
- Celo 的 monorepo(包括区块链、杂项工具、库、操作东西诸如 terraform 模块、文档等)。
- Bazel 的 migration-tooling 仓库。
- Gazelle 为 Go 软件包自动生成 Bazel BUILD 文件。
- tomono 将一组现有的Git仓库导入到一个单仓库中。
- shopsys/monorepo-tools 包含一套用于构建和拆分单体仓库的工具。
- Fastlane monorepo migration tools 用于迁移代码和 github issues 的工具。专为 fastlane 设计,所以需要修改一些代码才能使用。
- 基于主干的开发,是一种源码控制的分支模式,开发人员在被称为 "主干 "的单一分支上进行代码协作,通过采用文档技术,抵制任何创建其他长效开发分支的压力。因此,他们避免了合并地狱,不破坏构建,并从此幸福地生活在一起。
- 抽象的分支,是一个套路的技术,以实现树干的 "较长完成 "的变化。
在法律允许的范围内,Uriel Corfa 已经放弃了本作品的所有版权和相关或邻近的权利。