Skip to content

A CLI tool for managing the pnpm workspace catalog, which helps you categorize the packages in the catalog and update the associated package.json reference.

License

Notifications You must be signed in to change notification settings

ScaffoldCore/pnpm-category-catalog

Repository files navigation

Pnpm Category Catalog

English | 中文

pnpm-category-catalog is a CLI tool designed for monorepo projects using pnpm workspace. It solves the following pain points:

  • Batch Category Management: Process all dependencies in catalog at once, categorizing them by function or purpose
  • Automatic Reference Updates: Automatically update dependency references in package.json files of sub-projects to catalog:category-name format
  • Interactive Operations: Provide a friendly command-line interactive interface with confirm, cancel and undo support
  • Batch Processing: Support loop processing until all packages are categorized

screenshot

🛠️ Usage

Prerequisites

  1. Project must use pnpm workspace.
  2. pnpm-workspace.yaml file must exist in the project root directory.
  3. pnpm-workspace.yaml file must contain catalog configuration.

📦 Best Practices

👀 Interested in pnpm catalogs? Recommend you read this post: Categorize Your Dependencies by Anthony.

Direct Execution

Tip

You can execute directly or install globally. The following examples use direct execution:

# 1. migrate to `pnpm catalog` (execute this command if not yet migrated).
pnpx codemod pnpm/catalog

# 2. execute custom category migration command.
npx pnpm-category-catalog

Global Usage

If you want to use the command globally, you can do this:

Global Installation

npm install -g pnpm-category-catalog
# or
pnpm add -g pnpm-category-catalog

Run

Run in the project root directory:

pcc

🔧 Extensions

ESLint Ecosystem

If you want to use ESLint for some constraints, you can choose one of the following methods (optional):

  1. If you are using @antfu/eslint-config
export default antfu({
    pnpm: true,
    // other options ...
})
  1. If you are not using @antfu/eslint-config, use it directly in eslint.config.js. For details, see: pnpm-workspace-utils

🤝 Contributing

Welcome to submit Issues and Pull Requests!

Development

# Install dependencies
pnpm install

# Run with example scenario (auto setup + run CLI)
pnpm dev:basic

Example Scenarios

Command Description
pnpm dev:basic Basic scenario: all deps in catalog, not yet categorized

Each run automatically resets to initial state, so you can test repeatedly without pollution.

Directory Structure

examples/
├── fixtures/     # Original templates (read-only)
│   └── basic/
└── workspace/    # Working directory (auto-generated, git ignored)
    └── basic/

📄 License

MIT License © lonewolfyx

About

A CLI tool for managing the pnpm workspace catalog, which helps you categorize the packages in the catalog and update the associated package.json reference.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6