话题研发模式 › Monorepo

研发模式:Monorepo

Migrating Airbnb’s JVM Monorepo to Bazel

Airbnb将JVM代码库从Gradle迁移至Bazel,耗时4.5年,显著提升构建速度和开发效率。Bazel通过远程执行和缓存支持,使本地构建速度提升3-5倍,部署速度提升2-3倍。迁移过程中,团队解决了多版本库、构建文件自动生成等挑战,最终实现了全库的稳定迁移,大幅改善了开发体验。

行云前端重构之路:从单体应用到 Monorepo 的血泪史

行云前端工程在行云2.0时代迅速扩展,但面临代码结构混乱、业务杂糅、构建效率低下等问题。通过“内外同源绞杀计划”,采用monorepo架构,借助Nx和pnpm工具,实现了模块化、微前端化改造。优化了构建流程,清理了冗余代码,统一了样式规范,提升了扩展性和可维护性,为业务发展提供了坚实的架构支撑。

Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践

书接上回《Monorepo 解决方案 — Bazel 在头条 iOS 的实践》,在头条工程切换至 Bazel 构建系统后,为了支持用户使用 Xcode 开发的习惯,我们使用了开源项目 Tulsi 作为生成工具,用于将 Bazel 工程转换为 Xcode 工程。但是在使用的过程Ӣ

前端monorepo大仓共享复杂业务组件最佳实践

本文就对于共享复杂业务组件,如何做好权限控制、数据埋点以及平稳降级;如何规避 MF 远程组件的稳定性风险、解决组件源码依赖发布更新等问题,保证稳定性的同时,降低本地开发门槛展开讨论。

Monorepo 仓库代码质量提升实践

Monorepo 仓库包含多个项目,修改公共代码的影响范围广,回归成本高。本文介绍了通过以 Git Submodule方式引入单元测试等方案,从单测和人工 review 两方面保障 Monorepo 代码质量的实践。

前端Monorepo大仓代码按需拉取技术实现原理

本文主要对于git sparse checkout 的原理和在其之上的应用——大仓按需拉取cli 和 vscode 按需拉取插件展开讲解。当下的按需检出实现方案可能不是最终极的解决办法,后面还会继续迭代和优化。

Monorepo 解决方案 — Bazel 在头条 iOS 的实践

本文主要介绍了头条迁移至 Bazel 的历程,包括构建系统的架构分层和接入方案,以及结合 Bazel 的特性来优化工程配置的管理。

初识Monorepo

在如今快节奏的前端开发中,管理多个项目和组件的复杂性成为了开发团队的挑战,Monorepo作为一种新兴的解决方案,正在成为开发团队的新宠。

Monorepo 解决方案之 Remote Execution

本文主要介绍了Remote Execution在iOS Monorepo方案中的作用,原理和实现。作为和Monorepo配套的基础设施,Remote Execution很好的解决了仓库体积膨胀背景下,构建性能方面遇到的新挑战。

iOS Monorepo 全源码解决方案

Monorepo 全源码方案为大型移动端开发提供了全面可行性验证以及宝贵经验。

Monorepo 下 Git 工作流的最佳实践

没有哪一种 Git 工作流是银弹,合适的 Git 工作流往往取决于项目的代码规模、协作人数、应用场景等;本次分享先从适合小型 Monorepo 的 Feature branch 工作流开始分享,接着分享适用于中大型 Monorepo 的 Trunk-based 工作流,并给出一些选型标准供同学们参考,希望通过本次分享,大家能找到合适自己 Monorepo 工程的 Git 工作流!

React Native工程Monorepo改造实践

本文主要介绍对云音乐RN收银台进行monorepo改造的一些实践经验。

Monorepo,大型前端项目管理模式实践

本文分析的是我们在面对天猫校园业务-如意pos,在一个复杂应用场景下的一些项目管理模式的思考探索和落地实践,monorepo 本质上不是一种框架,而是面对一个项目发展阶段,寻求满足当下最适合自己的方案的一个解决思路策略。

从Multirepo到Monorepo 袋鼠云数栈前端研发效率提升探索之路

前端代码管理一直是困扰不少前端开发团队的难题,从开发到发布的整体工作流程中,除了常规的技术问题外,往往还伴随着沟通成本、维护成本及协作效率等问题。这些问题在团队规模较小的时候可能不太明显,但是当团队规模变大时矛盾就越发凸显。

数栈前端开发团队负责着离线开发、实时开发、数据服务、数据资产等多条产品线的开发和维护工作,面对众多的产品线,如何合理的管理代码,成了团队需要思考的问题,虽然借助了Multirepo进行管理,但还是遇到了许多难题。

How We Halved Go Monorepo CI Build Time

Before 2021, Uber engineers would have to take quite a taxing journey to make a code change to the Go Monorepo. First, the engineer would make their changes on a local branch and put up a code revision to our internal code review system, Phabricator. Next, our infrastructure would see the request and initiate a number of validation jobs on our CI. Those jobs would run build and test validation using the Bazel™ build system, check the coverage, do some other work, and report back to the user a red light (i.e., tests failed or some other issues) or green light. Next, the user, after seeing the “green light,” would get their code reviewed and then initiate a “land” request to the Submit Queue. The queue, after receiving their request, would patch their changes on the latest HEAD of the main branch and re-run these associated builds and tests to make sure their change would be valid at the current state of the repository. If everything looked good, the changes would be pushed and the revision would be closed.

This sounds pretty easy, right? Make sure everything is green, reviewed, and then let the queue do the work to push your change!

Well… what if the change is to a fundamental and widely used library? All packages depending on the library will need to be validated, even though the change itself is only a few lines of code. This might slow down the “build and test” part. Validating this change could sometimes take several hours. Internally, we call such changes big changes.

基于 Bazel 的 iOS Monorepo 工程实践

目前B站客户端的 Monorepo 模式还在进化中,未来会有越来越多的编译优化的自研规则实装到我们的iOS项目中来,分布式编译能力也已经提上日程。

ホーム - Wiki
Copyright © 2011-2025 iteam. Current version is 2.144.3. UTC+08:00, 2025-08-15 13:43
浙ICP备14020137号-1 $お客様$