Learn English vocabulary for monorepo package management: workspace protocol, local package linking, changesets, internal versioning, and pnpm/Yarn Berry workspaces.
0 / 5 completed
1 / 5
The 'workspace:' protocol in pnpm (e.g., '"my-utils": "workspace:*"') means:
workspace:* tells pnpm to use the local package from within the monorepo rather than fetching from npm. When publishing, pnpm replaces workspace: references with real version numbers. Yarn Berry uses the same protocol.
2 / 5
In a monorepo, 'changesets' (the @changesets/cli tool) are used to:
Changesets solves multi-package versioning: developers add a changeset file describing their changes, then `changeset version` bumps all affected packages (including dependents) and `changeset publish` releases them to npm.
3 / 5
pnpm's use of a 'content-addressable store' and symlinks instead of copying packages means:
pnpm's store means if 50 projects use lodash@4.17.21, there is only one copy on disk. Projects get symlinks into the store. This also prevents phantom dependencies because node_modules only contains symlinks for declared dependencies.
4 / 5
In a monorepo, 'internal package versioning' strategies differ: 'fixed/locked' versioning means:
Fixed versioning (used by Babel, Vue) keeps all monorepo packages at the same version. When any package releases, all packages get the same bump. Independent versioning (used by Jest) bumps each package separately. Both strategies have trade-offs for coordination and consumer experience.
Yarn PnP patches Node's module resolution to use a generated map instead of node_modules traversal. Installation is faster (no copying files), disk usage drops, and phantom dependencies are impossible because the map only contains declared deps.