Monorepos allow you to manage multiple projects in a single directory. They are a great way to organize your projects and make them easier to work with.

Use the New Project button to import your monorepo Project from within your Personal or Team Account.

If you'd like to deploy multiple different directories within the same Git repository, you can do so by creating a separate Project for each directory and configuring the Root Directory setting for it.

To achieve this, import your Git repository multiple times and selecting the directory where the Project's source code is located. This will configure the Root Directory of each Project to it's relevant directory in the repository.

Selecting a Root Directory for one of your new Projects.

Once you've created a separate Project for each of the directories within your Git repository, every commit will issue a Deployment for all connected Projects and display the resulting URLs on your pull requests and commits:

An example of Deployment URLs provided for a Deployment via Git.

The number of Vercel Projects connected with the same Git repository is limited depending on your plan.

Vercel CLI should always be invoked from the monorepo root, not the subdirectory.

First, run vercel link to select the Vercel Project (you can only link to one at a time). Once linked, subsequent commands such as vercel dev will use the selected Vercel Project. To switch to a different Project in the same monorepo, run vercel link again and select the new Project.

Alternatively, you can use git clone to create multiple copies of your monorepo in different directories and link each one to a different Vercel Project.

Note: Check out this example of a monorepo with Yarn Workspaces.

Pushing a commit to your monorepo will create a Deployment for each of the connected Vercel projects.

If you want to abort the Build Step for certain projects if their files didn't change, you can do so with the Ignored Build Step project setting.

Note: Check out this Support Article for further examples and information.

Whether or not your deployments are queued depends on the amount of Concurrent Builds you have available. Personal accounts are limited to 1 Concurrent Build, while teams can customize the amount on the "Billing" page in the team settings.

Learn more about how to adjust your Concurrent Builds here.

After having set up your monorepo as described above, each of the directories will be a separate Vercel project, and therefore be available on a separate domain.

If you'd like to host multiple projects under a single domain, you can create a new project, assign the domain in the project settings, and proxy requests to the other upstream projects. The proxy can be implemented using a `vercel.json` file with the rewrites property, where each `source` is the path under the main domain and each `destination` is the upstream project domain.

Pushing a commit to a Git repository that is connected with multiple Vercel projects will result in multiple deployments being created and built in parallel for each.

To access source files outside the Root Directory (which enables Yarn & Lerna Workspaces), enable the "Include source files outside of the Root Directory in the Build Step" option in the Root Directory section within the project settings.

Vercel projects created after August 27th 2020 23:50 UTC have this option enabled by default.

If you're using Vercel CLI, at least version 20.1.0 is required.

Vercel CLI should always be invoked from the monorepo root, not the subdirectory.

First, run vercel link to select the Vercel Project (you can only link to one at a time). Once linked, subsequent commands such as vercel dev will use the selected Vercel Project.

To switch to a different Project in the same monorepo, run vercel link again and select the new Project.

Alternatively, you can use git clone to create multiple copies of your monorepo in different directories and link each one to a different Vercel Project.

Note: Use Vercel CLI 20.1.0 or newer to ensure you can take advantage of the option for accessing source files outside the Root Directory (mentioned in a section above).

Vercel CLI will accept Environment Variables instead of Project Linking, which can be useful for deployments from CI providers. For example:

VERCEL_ORG_ID=team_123 VERCEL_PROJECT_ID=prj_456 vercel

Learn more about Vercel CLI for custom workflows.

Yes. Turborepo is available on all plans.