Outstanding Monorepo Tools
Tags: monorepo, repo, javascript, git
Published: 2023-02-16 17:10:11

A `monorepo` is a code repository with version control that houses several projects. Although they could be connected, these initiatives are frequently conceptually distinct and managed by several teams. Some businesses keep all of their **source code in a single, public repository.**
[https://monorepo.tools/](https://monorepo.tools/)

These are Eight widely used monorepo utilities. 

## 1. Rush
![Rush logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yisehbyxedavr49gdpus.png)

Rush: a scalable monorepo manager for the web

[https://rushjs.io/](https://rushjs.io/)


## 2. Turborepo

![Turborepo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cb7j3sb85t6bqsauo32d.png)


Turbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.

[https://turbo.build/](https://turbo.build/)

## 3. Yarn Workspaces

![Yarn workspaces](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ser0kol0w1ftlnebd2en.png)


Workspaces are a new way to set up your package architecture that's available by default starting from Yarn 1.0. It allows you to setup multiple packages in such a way that you only need to run yarn install once to install all of them in a single pass
[Yarn Workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces/)

## 4. Yalc
yalc acts as very simple local repository for your locally developed packages that you want to share across your local environment
[Yalc](https://www.npmjs.com/package/yalc)

## 5. Lerna

![Lerna](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kv6m5e5hx0s1xc4cjwpq.png)


Lerna is a tool for managing JavaScript projects with multiple packages. Lerna manages monorepos, which can hold projects containing multiple packages within itself. Monorepos can be challenging to manage because sequential builds and publishing individual packages take a long time.

[https://lerna.js.org/](https://lerna.js.org/)

## 6. npm Workspaces

![NPM workspace](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcql6gs8nhkj8h2e468t.png)


Workspaces is a generic term that refers to the set of features in the npm cli that provides support to managing multiple packages from your local file system from within a singular top-level, root package.

[NPM Workspaces](https://docs.npmjs.com/cli/v7/using-npm/workspaces)

## 7. pnpm

![pnpm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zotwj5bpc0plb65b0ac4.png)


What is PNPM? PNPM is an alternative package manager for Node. js which stands for “Performant NPM”. The main purpose of PNPM is to hold all the packages at a global (centralized) store and use them if needed by other projects too by creating hard links to it.

[https://pnpm.io/](https://pnpm.io/)

## 8. Nx

![Nx](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/17ttkl5denst2470ysw3.png)


Nx is a framework that allows you to architect, test, and build your project at any scale with the most popular modern Front-end frameworks like React and Angular, and Back-end ones like NestJs or Express. To make this possible, Nx comes shipped with a large toolset that simplifies your Monorepo management.

[https://nx.dev/](https://nx.dev/)