pnpm Workspaces

Workspace setup, filtering, recursive execution, deploy flows, and catalogs.

View
StandardDetailedCompact
Export
Copy the compact sheet, download it, or print it.
Download
`D` dense toggle · `C` copy all

Workspace Basics

Create and manage pnpm workspaces.

Create pnpm-workspace.yaml

Define the workspace root and included package globs.

bashANYpnpmworkspaceyaml
bash
cat > pnpm-workspace.yaml <<'YAML'
packages:
  - packages/*
  - apps/*
YAML

Define the workspace root and included package globs.

Install workspace dependencies

Inside a workspace, pnpm installs dependencies for all projects by default.

bashANYpnpmworkspaceinstall
bash
pnpm install

Inside a workspace, pnpm installs dependencies for all projects by default.

List workspace packages

Show workspace packages and their top-level dependencies.

bashANYpnpmworkspacelist
bash
pnpm -r list --depth 0

Show workspace packages and their top-level dependencies.

Run command from workspace root only

Run a command in the workspace root context.

bashANYpnpmworkspaceroot
bash
pnpm -w exec node -p process.cwd()

Run a command in the workspace root context.

Add a dependency to workspace root

Install a dependency into the workspace root package.json.

bashANYpnpmworkspacerootadd
bash
pnpm add -w -D typescript

Install a dependency into the workspace root package.json.

Workspace Filter Recipes

Useful selector patterns for targeted commands.

Filter exact package

Target a single package by name.

bashANYpnpmworkspacefilter
bash
pnpm --filter @acme/api build

Target a single package by name.

Filter dependents

Run command on a package and all dependents.

bashANYpnpmworkspacefilterdependents
bash
pnpm --filter @acme/core... test

Run command on a package and all dependents.

Filter dependencies

Run command on a package and all its dependencies.

bashANYpnpmworkspacefilterdependencies
bash
pnpm --filter ...@acme/web build

Run command on a package and all its dependencies.

Filter changed since branch

Target packages changed since a Git ref and their dependents.

bashANYpnpmworkspacefiltergit
bash
pnpm --filter "...[origin/main]" test

Target packages changed since a Git ref and their dependents.

Filter by glob

Target packages that match a glob pattern.

bashANYpnpmworkspacefilterglob
bash
pnpm --filter "@acme/*" lint

Target packages that match a glob pattern.

Filter by path

Target packages selected by filesystem path.

bashANYpnpmworkspacefilterpath
bash
pnpm --filter ./packages/ui... build

Target packages selected by filesystem path.

Deploy, Catalogs, and Workspace Features

Advanced workspace capabilities.

Deploy one workspace package

Copy a package with isolated production dependencies to a target directory.

bashANYpnpmworkspacedeploy
bash
pnpm --filter @acme/web deploy dist

Copy a package with isolated production dependencies to a target directory.

Define a workspace catalog

Define reusable dependency versions in a workspace catalog.

bashANYpnpmworkspacecatalog
bash
cat >> pnpm-workspace.yaml <<'YAML'
catalog:
  react: ^18.3.1
  typescript: ^5.8.2
YAML

Define reusable dependency versions in a workspace catalog.

Publish changed workspace packages

Publish all packages in a workspace whose new versions are not yet in the registry.

bashANYpnpmworkspacepublish
bash
pnpm publish -r

Publish all packages in a workspace whose new versions are not yet in the registry.

Rebuild all workspace packages

Run rebuild across workspace packages.

bashANYpnpmworkspacerebuild
bash
pnpm -r rebuild

Run rebuild across workspace packages.

Prune node_modules in all packages

Remove devDependencies from workspace package installs for production prep.

bashANYpnpmworkspacepruneprod
bash
pnpm -r prune --prod

Remove devDependencies from workspace package installs for production prep.

Recommended next

No recommendations yet.