Developing in a Large Monorepo

At Microsoft I worked in a very large TypeScript-based git repository where hundreds of developers build high-value frontend components used across Microsoft 365 products like Outlook, Office, Bing, and SharePoint. The repo holds on the order of 150 npm packages and over a million lines of TypeScript. Co-locating those packages makes collaboration and code sharing much easier — but only if the tooling keeps up.
In this talk I focused on package management and cross-package orchestration: how Yarn Workspaces, package hoisting, and Lerna help install dependencies quickly, run builds and scripts across packages, and ship releases without turning the monorepo into a bottleneck. With that setup, install times for 150+ packages dropped from about 20 minutes to about 6, and build times improved by more than 5×.
I gave versions of this talk at JSConf Korea 2020, JSFoo Pune 2020, and JSFoo 2019.
Developing in a Large Monorepo on Speaker Deck
Watch the JSConf Korea recording:
Also available from JSFoo Pune 2020 and JSFoo 2019.