Unified Package Manager for Node.js and Bun
What does nypm do?
✅ Supports npm, yarn, pnpm and bun out of the box with a unified API.
✅ Provides an API interface to interact with package managers.
✅ Autodetects project's package manager using package.json
and known lockfiles.
✅ Auto-installs and use exactly expected version of supported package managers using nodejs/corepack when available.
✅ Minimal implementation.
nypm, detects package manager type and version and converts command into package manager CLI arguments. It then uses corepack or proper command to execute package manager's command and download it if necessary.
+------------------------------------------------+
| nypm |
+------------------------------------------------+
+-----------------------------------+ +---------+
| Corepack | | bun |
+-----------------------------------+ +---------+
+---------+ +---------+ +---------+
| npm | | yarn | | pnpm |
+---------+ +---------+ +---------+
nypm
Command
Install dependencies:
npx nypm i
Add a dependency:
npx nypm add defu
Remove a dependency:
npx nypm remove defu
API Usage
Install package:
npx nypm i nypm
npm install nypm
yarn add nypm
pnpm install nypm
bun install nypm
Import:
import { addDependency } from "nypm";
const { addDependency } = require("nypm");
addDependency(name, options)
Adds dependency to the project.
addDevDependency(name, options)
Adds dev dependency to the project.
detectPackageManager(cwd, options)
Detect the package manager used in a directory (and up) by checking various sources:
- Use
packageManager
field from package.json - Known lock files and other files
ensureDependencyInstalled(name, options)
Ensures dependency is installed.
installDependencies(options)
Installs project dependencies.
removeDependency(name, options)
Removes dependency from the project.
💻 Development
- Clone this repository
- Play Nyan Cat in the background (really important!)
- Enable Corepack using
corepack enable
(use npm i -g corepack
for Node.js < 16.10) - Install dependencies using
pnpm install
- Run interactive tests using
pnpm dev
Related Projects
NYPM is inspired from previous attempts and projects for unifying package manager exeperience.
License
Made with 💛
Published under MIT License.