-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
2 / 42 of 4 issues completedDescription
This is a tracking issue for the implementation of RFC: Catalogs — Shareable dependency version specifiers. All pull requests and commits related to the initial implementation of this feature will reference this issue number.
Tasks
- Support the
catalog:andcatalog:defaultspecifiers during installation. - Support
catalog:<name>specifiers during installation. -
There will likely need to be alockfileVersionincrease in thepnpm-lock.yamlfile.- Update: This won't be required after all.
- Make
pnpm outdatedwork. I should be able to runpnpm outdatedand it should be able to list all the packages in mypnpm-workspace.yamlfile that are outdated - Show an error for recursive catalog references.
- Add docs. (Done at https://pnpm.io/catalogs)
-
pnpm addshould use the default catalog #8640 -
pnpm updateshould update catalogs inpnpm-workspace.yaml#8641
Improvements
These would be good to have, but not required.
- Support the
catalog:protocol forpnpm.overrides. - Persist comments and white-space when updating
pnpm-workspace.yaml. We don't do this forpackage.yamleither, but hopefully we can carry over whatever solution lands there. - Better support sets of dependencies that should be on the same version in pnpm catalogs #8245
- Allow users to create a best-effort default catalog. We could consider an internal
pnpm catalog migratecommand or an externalpnpm dlx @pnpm/catalog-migratecommand. - Test common automated dependency mechanisms such as Dependabot and Mend Renovate to track whether they can support catalog updates.
- Support the
file:andlink:protocols as catalog entries #8642
Tests
- Changing a catalog entry in
pnpm-workspace.yamlcauses the lock file to not be up to date. - Catalog specifiers error out if used by external dependencies.
Rollout
- Update docs to explain how the catalog works.
-
Consider a more publicly facing announcement that explains what problems catalogs solve.- The docs site should suffice. https://pnpm.io/catalogs
PRs
Merged into main:
- fix: update WorkspaceManifest packages field type to be non-null #8205
- refactor: store workspace manifest in
@pnpm/configfor reuse #8213 - refactor: improve type checking when finding workspace packages #8214
- fix: use
--workspace-packagesCLI overpnpm-workspace.yamlin more cases #8215
Staged onto feature branch:
- feat: create new
@pnpm/catalogs.typespackage #8026 - feat: read catalog configs from workspace manifest #8123
- feat: create new
@pnpm/catalogs.protocol-parserpackage #8124 - refactor: factor out isWantedDepPrefSame to extend in a future commit #8125
- feat: implement catalog protocol for publish #8225
- feat: implement catalog protocol for install #8221
Merged into main after feature branch merged
- fix: show better error when encountering external catalog protocol usage #8254
- fix: prevent catalogs using the
workspace:,link:, andfile:protocols #8255 - fix: reuse existing cataloged resolutions for consistency #8259
- fix: reuse catalog resolutions of npm aliases correctly #8281
- fix: preserve catalog protocol when updating project manifest #8285
- fix: skip cataloged dependencies when running
pnpm update --latest#8286 - fix:
pnpm outdatedshould work withcatalog:protocol #8304
Reactions are currently unavailable