Logo of nypm

nypm

Node.js 的统一包管理器

Node.js 和 Bun 的统一包管理器

nypm 有什么作用?

✅ 通过统一的 API,开箱即用支持 npmyarnpnpmbun

✅ 提供用于与包管理器交互的 API 接口

✅ 使用 package.json 和已知锁定文件自动检测项目的包管理器。

✅ 当可用时,使用 nodejs/corepack 自动安装并使用支持的包管理器的精确预期版本

极简实现。

nypm 检测包管理器的类型和版本,并将命令转换为包管理器的 CLI 参数。然后,它使用 corepack 或适当的命令执行包管理器的命令,并在必要时下载它。

  +------------------------------------------------+
  |                nypm                            |
  +------------------------------------------------+
  +-----------------------------------+  +---------+
  |              Corepack             |  |  bun    |
  +-----------------------------------+  +---------+
  +---------+  +---------+  +---------+
  |   npm   |  |  yarn   |  |  pnpm   |
  +---------+  +---------+  +---------+

nypm 命令

安装依赖

npx nypm i

添加依赖

npx nypm add defu

移除依赖

npx nypm remove defu

API 使用

安装包

# ✨ Auto-detect
npx nypm i nypm

# npm
npm install nypm

# yarn
yarn add nypm

# pnpm
pnpm install nypm

# bun
bun install nypm

导入

// ESM
import { addDependency } from "nypm";

// CommonJS
const { addDependency } = require("nypm");

addDependency(name, options)

将依赖项添加到项目。

addDevDependency(name, options)

将开发依赖项添加到项目。

detectPackageManager(cwd, options)

通过检查各种来源,检测目录中(及向上)使用的包管理器

  1. 使用 package.json 中的 packageManager 字段
  2. 已知锁定文件及其他文件

ensureDependencyInstalled(name, options)

确保依赖项已安装。

installDependencies(options)

安装项目依赖项。

removeDependency(name, options)

从项目中移除依赖项。

💻 开发

  • 克隆此仓库
  • 在后台播放 Nyan Cat (真的非常重要!)
  • 使用 corepack enable 启用 Corepack(Node.js < 16.10 请使用 npm i -g corepack
  • 使用 pnpm install 安装依赖项
  • 使用 pnpm dev 运行交互式测试

NYPM 的灵感来源于之前统一包管理器体验的尝试和项目。

许可

用心制作 💛

根据 MIT 许可证 发布。