Front-End Web Development treats npm 2,036 as a way to get code into a project: npm install, a dependencies object, a caret range. This section works in the other direction — describing a package precisely enough that a registry, a bundler and three package managers agree on what it is, shipping it under a version others can depend on, proving where the tarball was built, and doing the same for a dozen packages at once.
Every command below ran on Node v25.8.0 with the bundled npm 11.11.0; the standalone npm line has moved on to 12.0.2, pnpm 69,400 to 12.4.2, Turborepo 226,392 to 2.10.13, Nx 180,159 to 23.2.1 and @changesets/cli to 3.0.3 (registry latest tags, 17 September 2026). Nothing was published: --dry-run shows what would go over the wire.
| Task | npm | pnpm | Yarn 11,798 |
|---|---|---|---|
| Reproducible install | npm ci | pnpm install --frozen-lockfile | yarn install --immutable |
| Workspace field | workspaces | pnpm-workspace.yaml | workspaces |
| Run in one package | npm run b -w pkg | pnpm -F pkg b | yarn workspace pkg b |