What are monorepos?
We will discuss what monorepos are and the essential criteria for monorepo implementation
Get the project source code below, and follow along with the lesson material.
Download Project Source CodeTo set up the project on your local machine, please follow the directions provided in the README.md
file. If you run into any issues with running the project source code, then feel free to reach out to the author in the course's Discord channel.
This lesson preview is part of the The Art of Enterprise Monorepos with Nx and pnpm course and can be unlocked immediately with a \newline Pro subscription or a single-time purchase. Already have access to this course? Log in here.
Get unlimited access to The Art of Enterprise Monorepos with Nx and pnpm, plus 70+ \newline books, guides and courses with the \newline Pro subscription.
[00:00 - 00:13] In this lesson, we discuss what mono-repose are and what a good mono-repore means. So strictly speaking, a mono-repore is a single repository containing multiple distinct projects with well-defined relationships.
[00:14 - 00:23] So what are the essential criteria for mono-repore implementation? Mono-repore should not be just a location where all the code lives.
[00:24 - 00:40] It must effectively address the fundamental challenges inherent in managing numerous interdependent packages or projects. So here's a rundown of main requirements for an optimal workflow, source code sharing.
[00:41 - 00:50] Being able to easily share modules and libraries are important within a single mono-repore. Local dependency linking configuration.
[00:51 - 01:10] The mono-repore tooling ought to facilitate local dependency linking. This means that within the repository, the code of other packages should be accessible and loaded internally, while still maintaining version control and the ability to retrieve dependencies from a binary repository upon publishing.
[01:11 - 01:22] Dependency analysis. It should be able to identify the dependencies existing among various projects within the repository without needing additional configuration.
[01:23 - 01:38] Local computation caching. The ability to save and review task outputs as well as store files for future reference ensures that repetitive building and testing of identical output on the same machine becomes a thing of the past.
[01:39 - 01:48] Affected packages identification. The system should determine which projects stand to be impacted by changes within the repository.
[01:49 - 01:58] These entails identifying modified projects or those that rely on them, regardless of the level of dependency. Local task orchestration.
[01:59 - 02:13] Leveraging the repository's dependency structure, it should orchestrate tasks in the correct order as well as in parallel. For instance, integration tests should not be conducted until all requisite projects have been built beforehand.
[02:14 - 02:26] But integration tests can run in parallel. In this lesson, we learned what a mono-repore is and what constitutes as characteristics of a great mono-repore in detail.
[02:27 - 02:31] In the next module, we will look at how we can configure a PNPM workspace.