Build
npm / pnpm / yarn — comparison + when to use which
## Install dependencies | Action | npm | pnpm | yarn | |---|---|---|---| | Install all | `npm install` | `pnpm install` | `yarn` | | Add prod | `npm i pkg` | `pnpm add pkg` | `yarn add pkg` | | Add dev | `npm i -D pkg` | `pnpm add -D pkg` | `yarn add -D pkg` | | Add global | `npm i -g pkg` | `pnpm add -g pkg` | `yarn global add pkg` | | Remove | `npm un pkg` | `pnpm rm pkg` | `yarn remove pkg` | | Upgrade | `npm update pkg` | `pnpm update pkg` | `yarn upgrade pkg` | ## Run scripts `npm run dev` / `pnpm dev` / `yarn dev` (pnpm + yarn don't require `run` for non-reserved names.) ## Execute one-off binary (without installing) `npx pkg arg` / `pnpm dlx pkg arg` / `yarn dlx pkg arg` ## Frozen / lockfile-strict installs (for CI) `npm ci` (uses package-lock.json, no updates) `pnpm install --frozen-lockfile` `yarn install --frozen-lockfile` (yarn classic) / `yarn install --immutable` (yarn berry) ## Lockfile names - npm → `package-lock.json` - pnpm → `pnpm-lock.yaml` - yarn classic → `yarn.lock` - yarn berry → `yarn.lock` + `.yarn/cache` ## When to use which - **pnpm**: best for monorepos + disk efficiency (content-addressable store). Fastest install. Recommended default in 2026. - **npm**: ships with Node, no extra install. Use if you want zero ceremony. - **yarn berry (v2+)**: best for workspaces + PnP if you want zero node_modules. Newer ecosystem support varies. ## Monorepo - pnpm: `pnpm-workspace.yaml` + run `pnpm -F <pkg> ...` - yarn: `workspaces` in root package.json - npm: also supports `workspaces` since v7