Skip to content

Support pnpm catalog #1835

Open

Description

@tobynguyen27

Description

In current Vite+, when running vp add vue with pnpm catalogs configured in pnpm-workspace.yaml, it totally ignores the catalog and add the package with it version directly in package.json.

Since pnpm catalogs feature provide a lot of benefit for packages management (Anthony Fu wrote a blog about it), it will be great if VIte+ does support it.

Suggested solution

  • This feature can be toggle by a config in vite.config.ts: pnpm.catalog: boolean or an env var like VP_CATALOG=boolean.

  • When running vp add and Vite+ detects a workspace that use pnpm catalog: instead of adding packages with pinned versions, it writes catalog: references into package.json and updates the workspace catalog:

# Given pnpm-workspace.yaml with:
#   catalogs:
#     prod:
#       react: ^18.3.0

vp add react
# → detects react in "prod" catalog
# → writes "react": "catalog:prod" to package.json
# → runs vp install

vp add lodash
# → lodash not in any catalog
# → prompts to select a catalog (or skip)
# → fetches latest version, updates pnpm-workspace.yaml
# → writes "lodash": "catalog:prod" to package.json
# → runs vp install

Alternative

No response

Additional context

This feature is inspired by ni

Validations

  • Read the Contributing Guidelines.
  • Confirm this request is for Vite+ itself and not for Vite, Vitest, tsdown, Rolldown, or Oxc.
  • Check that there isn't already an issue requesting the same feature.

Activity

  1. jong-kyung commented on Jun 15, 2026

    @jong-kyung
    Collaborator

    Thanks for the request!

    Vite+ already forwards pnpm catalog flags:

    • vp add react --save-catalog
    • vp add react --save-catalog-name prod

    And when catalogMode: prefer is configured, plain vp add follows pnpm’s native behavior for the default catalog.

  2. tobynguyen27 commented on Jun 15, 2026

    @tobynguyen27
    ContributorAuthor

    Thanks for the request!

    Vite+ already forwards pnpm catalog flags:

    * `vp add react --save-catalog`
    
    * `vp add react --save-catalog-name prod`
    

    And when catalogMode: prefer is configured, plain vp add follows pnpm’s native behavior for the default catalog.

    It'd be nice if we added an interact TUI:

    When execute vp add react. It will show a prompt that asks user which catalog should this package added to or creating a new catalog (this TUI is only for workspace which is using name catalogs)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Fields

    Priority

    None yet

    Start date

    None yet

    Target date

    None yet

    Effort

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions