Recognizing that terminology can vary across different organizations and contexts, we've created this glossary to provide clear and consistent definitions for the terms and concepts we use in our products and documentation at Vercel.
A directory, also known as a folder in some operating systems, is a file system structure used to organize and store files on a computer. It helps to manage files by grouping them into a hierarchical structure of directories and subdirectories.
In programming and scripting, "directory" is often abbreviated to "dir".
In version control systems like Git, a repository is a location where files, including source code, are stored and managed. It not only houses the current version of every file but also maintains a history of all changes made to these files over time. This history is crucial for tracking modifications, collaborating on code, and reverting to previous versions if necessary.
A monorepo, short for "monolithic repository", is a version control strategy in which many packages or modules are stored in a single repository. This approach stands in contrast to a multi-repo approach, where each package or module has its own separate repository.
Monorepos facilitate easier code sharing and collaboration across the different parts of a codebase, and are not limited to a specific package manager or programming language.
A multi-repo, short for "multi-repository" and also known as "polyrepo", is a version control strategy where each package or module has its own separate repository. This approach stands in contrast to a monorepo approach, where multiple packages or modules are stored in a single repository.
The package manager's root lockfile (i.e.
pnpm-lock.yaml) is located at the
workspace root, along with any additional configuration, such as the paths
where packages are located when working in a
A workspace that represents a standalone package with a single
file at the workspace root.
A workspace that contains multiple packages.
A multi-package workspace contains multiple
package.json files, including one
at the workspace root for global configuration, and one in each package
The configuration for these packages is stored at the root of the workspace.
For pnpm, this configuration is in
pnpm-workspace.yaml. npm and Yarn use
workspaces key in
This type of workspace is often associated with a monorepo.
A package is a collection of files and directories that are grouped together based on a common purpose. Types of packages include libraries, applications, services, and development tools.
Packages enable complex code bases to be decomposed into smaller, manageable, and independent components. This modular approach is essential to monorepos, a repository structure that houses multiple interconnected packages, facilitating streamlined management and development of large-scale projects.
package.json file at its root, which
contains metadata about the package, including its name, version, and any
managed and distributed through npm.
Some package managers, including npm, refer to packages as "workspaces" in the context of a multi-package workspace.