A universal tool for executing commands across multiple package managers, independent of runtime or environment. Supporting popular tools like npm, cnpm, pnpm, yarn, bun, deno, and even jsr, it provides a consistent interface to simplify development workflows and automate tasks, regardless of the package manager being used.
This monorepo contains two main packages:
- Panam: The core programmatic API for interacting with package managers.
- Panam CLI: The command-line interface for Panam.
- π Cross-runtime compatibility:
Works seamlessly with the most popular package managers
like
npm
,cnpm
,pnpm
,yarn
,bun
,deno
, andjsr
. - π― Unified interface: One tool to handle commands across different managers, so you can focus on building.
- β‘ Performance optimized: Executes commands efficiently with runtime detection and intelligent fallback strategies.
- π§ Future-ready: Easily extendable to support new package managers.
- π οΈ Command flexibility: Support for
install
,add
,remove
,run
,exec
, anddlx
commands with consistent behavior across environments. - π Custom detection: Automatically detects the appropriate package manager for a given project or allows explicit specification.
The panam
package provides a programmatic interface for developers
who want to integrate Panam functionality into their own applications.
The panam-cli
package offers a command-line interface
to execute Panam commands directly in your terminal.
Install the specific Panam package based on your needs using your preferred package manager:
-
With
NPM
:npm install panam
-
With
Yarn
:yarn add panam
-
With
PNPM
:pnpm add panam
-
With
Bun
:bun add panam
-
With
Deno
:deno add --allow-scrits npm:panam
-
With
NPM
:npm install -g panam-cli
-
With
Yarn
:yarn global add panam-cli
-
With
PNPM
:pnpm add -g panam-cli
-
With
Bun
:bun install -g panam-cli
-
With
Deno
:deno install --allow-scripts npm:panam-cli
Panam automatically detects the active package manager for your project:
pnm install
Run a script defined in your package.json
:
pnm run <script-name>
Panam adapts commands like exec
or dlx
for compatibility across package managers:
pnm exec vite --template vue
pnm install
pnm add @qwikdev/astro
pnm remove @qwikdev/astro
pnm create @qwikdev/astro my-qwik-astro-app
pnm exec @qwikdev/create-astro .
pnm dlx @qwikdev/create-astro my-qwik-astro-app
Panam also exposes a powerful programmatic API for advanced use cases:
import pnm from 'panam';
const version = await pnm.version();
console.log(`Current runtime version: ${version}`);
await pnm.help(); // Show the runtime help message
await pnm.pm.$('install');
await pnm.install();
await pnm.create('@qwikdev/astro');
await pnm.add('@qwikdev/astro');
await pnm.run('create-astro');
await pnm.exec('astro add @qwikdev/astro');
await pnm.dlx('@qwikdev/create-astro my-qwik-astro-app');
await pnm.x('astro add @qwikdev/astro');
Panam currently supports the following package managers:
- β npm
- β cnpm
- β pnpm
- β yarn
- β bun
- β deno
- β jsr
More package managers can be added with ease.
Go to https://siguici.github.io/panam for more documentation and usage examples.
Under the MIT License. Created with β€οΈ by Sigui KessΓ© Emmanuel.