Skip to content
This repository was archived by the owner on Sep 5, 2026. It is now read-only.
ScaffoldCorePublic archive

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

Stars

48 stars

Watchers

0 watching

Forks

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

Stars

48 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages