Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/unjs/nypm
🌈 Unified Package Manager for Node.js and Bun
https://github.com/unjs/nypm
Last synced: 9 days ago
JSON representation
🌈 Unified Package Manager for Node.js and Bun
- Host: GitHub
- URL: https://github.com/unjs/nypm
- Owner: unjs
- License: mit
- Created: 2022-12-06T15:26:07.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-19T01:13:44.000Z (26 days ago)
- Last Synced: 2024-10-19T19:53:39.561Z (25 days ago)
- Language: TypeScript
- Homepage:
- Size: 1.53 MB
- Stars: 480
- Watchers: 6
- Forks: 17
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 🌈 [nypm](https://www.youtube.com/watch?v=QH2-TGUlwu4)
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![Github Actions][github-actions-src]][github-actions-href]
[![Codecov][codecov-src]][codecov-href]> Unified Package Manager for Node.js and Bun
## What does **nypm** do?
✅ Supports [npm](https://docs.npmjs.com/cli/v10/commands/npm), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/) and [bun](https://bun.sh/package-manager) 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](https://github.com/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:**
```sh
npx nypm i
```**Add a dependency:**
```sh
npx nypm add defu
```**Remove a dependency:**
```sh
npx nypm remove defu
```## API Usage
Install package:
```sh
# ✨ Auto-detect
npx nypm i nypm# npm
npm install nypm# yarn
yarn add nypm# pnpm
pnpm install nypm# bun
bun install nypm
```Import:
```js
// ESM
import { addDependency } from "nypm";// CommonJS
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:
1. Use `packageManager` field from package.json
2. 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](https://www.youtube.com/watch?v=2yJgwwDcgV8) in the background (really important!)
- Enable [Corepack](https://github.com/nodejs/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.
- [pi0/yarnpm](https://github.com/pi0/yarnpm)
- [unjs/lmify](https://github.com/unjs/lmify)
- [antfu/ni](https://github.com/antfu/ni)
- [antfu/install-pkg](https://github.com/antfu/install-pkg)
- [egoist/dum](https://github.com/egoist/dum)
- [nodejs/corepack](https://github.com/nodejs/corepack)## License
Made with 💛
Published under [MIT License](./LICENSE).
[npm-version-src]: https://img.shields.io/npm/v/nypm?style=flat-square
[npm-version-href]: https://npmjs.com/package/nypm
[npm-downloads-src]: https://img.shields.io/npm/dm/nypm?style=flat-square
[npm-downloads-href]: https://npmjs.com/package/nypm
[github-actions-src]: https://img.shields.io/github/actions/workflow/status/unjs/nypm/ci.yml?branch=main&style=flat-square
[github-actions-href]: https://github.com/unjs/nypm/actions?query=workflow%3Aci
[codecov-src]: https://img.shields.io/codecov/c/gh/unjs/nypm/main?style=flat-square
[codecov-href]: https://codecov.io/gh/unjs/nypm