Overview
Pacwich is an npm package that works with your package manager's workspace functionality. Pacwich supports Bun, npm, and pnpm workspaces.
We take package security seriously.
Read below on reasons to use Pacwich, or go straight to the Getting Started page for more information.
Easy, Zero-Config
Pacwich's main goal is to provide a straightforward monorepo tooling layer that uses as much data from your package manager as it can, not requiring special configuration to get started, though accepting optional config for more advanced usage.
It works with your workspaces' package.json scripts directly instead of defining a new mental model for
defining your processes.
A CLI and TS/JS API
Pacwich provides both a CLI and a TS/JS API for interacting with your monorepo.
Since the CLI is developed via TypeScript, providing the API is natural, since the CLI needs a TypeScript core underneath it anyway.
The API is held in close parity with the CLI. This means that you can write scripts
for your repo's automation tasks that involve pacwich for getting metadata or running
scripts in either shell code or TypeScript/JavaScript.
Decoupling from Your Package Manager
The top package managers for JavaScript provide their own monorepo functionality, but there are several reasons to decouple your monorepo tooling from your package manager of choice.
Scope and Development Process of PMs
Every package manager comes with various advantages and disadvantages. Package manager directions can change, and they compete on a variety of fronts, not just monorepo features. One can be the hot favorite one day and fall out of favor the next. One may have the best monorepo support but stall its progress as priorities shift.
Package managers' surfaces are large and cover many different concerns, which can often mean that monorepo features are more expensive to add, especially if a CLI is already crowded with various concerns, and some advanced monorepo features may never be in scope for these tools.
Pacwich's Answer
Pacwich has the advantage of being able to focus scope entirely on monorepo features and develop quickly as a straightforward TypeScript package, free of package managers' red tape.
Pacwich seeks to provide a unified layer for your monorepo tooling, so that you're free to swap package managers without losing your monorepo metadata or script orchestration, with little to no friction when doing so.
A Lightweight Project Graph
Pacwich is aware of how your workspaces depend on each other, opting to read dependencies from package.json files instead of relying on analysis your JavaScript/TypeScript files. This makes analyzing your project graph simple and fast.
Since declaring workspaces as dependencies in package.json files isn't required in all package managers,
Pacwich includes a verify feature to help detect missing dependencies via simple code analysis.


