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-nameformat - 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
- Project must use
pnpm workspace. pnpm-workspace.yamlfile must exist in the project root directory.pnpm-workspace.yamlfile must containcatalogconfiguration.
👀 Interested in pnpm catalogs? Recommend you read this post: Categorize Your Dependencies by Anthony.
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-catalogIf you want to use the command globally, you can do this:
npm install -g pnpm-category-catalog
# or
pnpm add -g pnpm-category-catalogRun in the project root directory:
pccIf you want to use ESLint for some constraints, you can choose one of the following methods (optional):
- If you are using
@antfu/eslint-config
export default antfu({
pnpm: true,
// other options ...
})- If you are not using
@antfu/eslint-config, use it directly ineslint.config.js. For details, see: pnpm-workspace-utils
Welcome to submit Issues and Pull Requests!
# Install dependencies
pnpm install
# Run with example scenario (auto setup + run CLI)
pnpm dev:basic| 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.
examples/
├── fixtures/ # Original templates (read-only)
│ └── basic/
└── workspace/ # Working directory (auto-generated, git ignored)
└── basic/
MIT License © lonewolfyx
