import Callout from "../../../../components/Callout"; import HeartIcon from "@heroicons/react/solid/HeartIcon"; import { Tabs, Tab } from "../../../../components/Tabs";
A package manager (like npm
) handles two things for you: managing workspaces and installing packages.
Turborepo is compatible with four package managers:
You should use whichever you feel most comfortable with - but if you're a monorepo beginner, we recommend npm.
If you're comfortable with monorepos, we recommend pnpm. It's faster and offers some useful CLI options like --filter
.
When you first clone or create your monorepo, you'll need to:
- Make sure you're in the root directory of your monorepo
- Run the install command:
<Tabs items={["npm", "yarn", "pnpm"]} storageKey="selected-pkg-manager">
```bash
npm install
```
```bash
yarn install
```
```bash
pnpm install
```
You'll now see node_modules
folders appear in the root of your repository, and in each workspace.
You can add, remove and upgrade packages from within your monorepo using your package manager's built-in commands:
<Tabs items={['npm', 'yarn', 'pnpm']} storageKey="selected-pkg-manager">
**Install a package in a workspace**
```bash
npm install <package> --workspace=<workspace>
```
Example:
```bash
npm install react --workspace=web
```
**Remove a package from a workspace**
```bash
npm uninstall <package> --workspace=<workspace>
```
Example:
```bash
npm uninstall react --workspace=web
```
**Upgrade a package in a workspace**
```bash
npm update <package> --workspace=<workspace>
```
Example:
```bash
npm update react --workspace=web
```
**Install a package in a workspace**
```bash
yarn workspace <workspace> add <package>
```
Example:
```bash
yarn workspace web add react
```
**Remove a package from a workspace**
```bash
yarn workspace <workspace> remove <package>
```
Example:
```bash
yarn workspace web remove react
```
**Upgrade a package in a workspace**
```bash
yarn workspace <workspace> upgrade <package>
```
Example:
```bash
yarn workspace web upgrade react
```
**Install a package in a workspace**
```bash
pnpm add <package> --filter <workspace>
```
Example:
```bash
pnpm add react --filter web
```
**Remove a package from a workspace**
```bash
pnpm uninstall <package> --filter <workspace>
```
Example:
```bash
pnpm uninstall react --filter web
```
**Upgrade a package in a workspace**
```bash
pnpm update <package> --filter <workspace>
```
Example:
```bash
pnpm update react --filter web
```