
nypm API 完全参考8 个核心函数用法与参数详解【免费下载链接】nypm Unified Package Manager for Node.js (npm, pnpm, yarn), Bun, Deno, Nub, Aube.项目地址: https://gitcode.com/gh_mirrors/ny/nypmnypm 是一个统一的 Node.js 包管理器 API 库它能用同一套函数驱动 npm、pnpm、yarn、bun、deno 等 7 种包管理器还能自动识别项目使用的工具链。如果你厌倦了在不同项目间切换命令的繁琐这套nypm API 用法能让你彻底告别记命令的烦恼。本文整理了 nypm 的 8 个核心函数及其完整参数详解从安装依赖到运行脚本一网打尽帮你快速掌握这个彩虹色的小工具 。快速认识 nypm一个 API 搞定所有包管理器nypm 的核心理念非常简单写一次代码处处运行。无论是传统的 npm/yarn/pnpm还是新兴的 bun/deno甚至是更小众的 aube/nubnypm 都能通过统一的 API 自动适配对应的底层命令。它的两大杀手锏是✅自动检测根据package.json中的packageManager字段或各类 lockfile 自动判断项目使用哪个包管理器✅corepack 集成pnpm、yarn 等工具可自动通过 corepack 调用无需手动安装所有 API 都定义在 src/api.ts 中类型定义位于 src/types.ts命令构建逻辑在 src/cmd.ts。下面逐一拆解 8 个核心函数的参数与用法。1. detectPackageManager()一键检测包管理器这是 nypm 最常用的侦察兵函数返回PromisePackageManager | undefined。import { detectPackageManager } from nypm; const pm await detectPackageManager(/path/to/project); // 输出示例{ name: pnpm, command: pnpm, lockFile: pnpm-lock.yaml, ... }它的检测优先级源码见 src/package-manager.tspackage.json的packageManager字段如packageManager: pnpm8.6.5package.json的devEngines.packageManager字段目录中的deno.json已知的 lockfile 和标志文件如package-lock.json、pnpm-lock.yaml、yarn.lock、bun.lock、deno.lock等参数详解参数类型默认值作用cwdstring当前目录检测的起始目录ignoreLockFilebooleanfalse忽略 lockfile 检测ignorePackageJSONbooleanfalse忽略 package.json 字段检测includeParentDirsbooleantrue是否向父目录回溯查找ignoreArgvbooleanfalse忽略通过命令行参数推测包管理器 小技巧includeParentDirs默认开启在 monorepo 的子包目录里也能自动找到根目录的包管理器。2. installDependencies()安装项目依赖安装依赖是最高频的操作nypm 会把它翻译成对应包管理器的命令npm 用install、pnpm 用install、deno 用install而开启frozenLockFile后则分别变成npm ci、pnpm install --frozen-lockfile、deno install --frozen等。import { installDependencies } from nypm; await installDependencies({ cwd: /path/to/project, frozenLockFile: true, // 严格按 lockfile 安装 });参数详解参数类型默认值作用cwdstring当前目录指定运行目录silentbooleanfalse静默模式不输出日志packageManagerstring/对象自动检测手动指定包管理器frozenLockFilebooleanfalse使用锁定版本安装CI 推荐ignoreWorkspacebooleanfalse忽略 pnpm workspacedrybooleanfalse只打印命令不真正执行corepackbooleantrue是否通过 corepack 调用 推荐 CI 场景使用frozenLockFile: true能保证构建环境与本地依赖完全一致。3. addDependency() 与 addDevDependency()添加依赖这两个函数一个是添加生产依赖一个是添加开发依赖dev: true的快捷方式。支持批量添加、workspace 定向安装和全局安装。import { addDependency, addDevDependency } from nypm; // 添加多个生产依赖 await addDependency([defu, pathe], { cwd: ./my-app }); // 添加开发依赖 await addDevDependency(vitest, { cwd: ./my-app }); // 安装到指定 workspacepnpm 会生成 --filter 参数 await addDependency(lodash, { workspace: packages/ui });参数详解参数类型默认值作用namestring/string[]必填依赖名支持数组批量cwdstring当前目录运行目录devbooleanfalse作为 devDependency 安装workspaceboolean/string-指定 workspacepnpm--filter、npm-wglobalbooleanfalse全局安装-ginstallPeerDependenciesbooleanfalse自动安装 peerDependenciessilent/dry/corepack--与安装函数一致⚠️ 注意deno 环境下 nypm 会自动给包名加上npm:前缀如npm:pathe无需手动处理。4. removeDependency()移除依赖与添加依赖对称卸载同样支持批量、workspace 和全局模式参数结构几乎完全一致。import { removeDependency } from nypm; await removeDependency(lodash, { cwd: ./my-app }); await removeDependency([a, b], { dev: true, workspace: packages/ui });它会把命令翻译为npm uninstall、pnpm remove、yarn remove等对应形态源码见 src/api.ts。5. ensureDependencyInstalled()确保依赖已安装这是一个幂等函数先检查依赖是否已存在存在则直接返回true不存在则自动帮你安装。非常适合在工具脚本、CLI 插件中做依赖兜底。import { ensureDependencyInstalled } from nypm; const installed await ensureDependencyInstalled(consola, { cwd: ./my-app, dev: true, // 如果需要安装作为 devDependency 安装 }); if (installed) { console.log(依赖已就绪 ✅); }它的实现逻辑很简洁内部调用doesDependencyExist()检查找不到就调用addDependency()具体见 src/api.ts。6. dedupeDependencies()依赖去重瘦身随着项目迭代node_modules里经常出现同一依赖的多份副本。dedupeDependencies 可以帮你清理重复依赖让安装目录更清爽。import { dedupeDependencies } from nypm; await dedupeDependencies({ cwd: ./my-app });参数与行为说明参数类型默认值作用recreateLockfileboolean视情况重建 lockfile 而非去重其余参数--与 installDependencies 一致 特别提醒bun 和 deno 不支持 dedupe 命令nypm 会自动改为删除 lockfile 后重新安装yarn classicv1则会退化为yarn install。这一设计在 src/api.ts 中有清晰注释。7. runScript()运行 package.json 脚本不需要再纠结是npm run dev还是yarn dev一个函数全部搞定。deno 环境下会自动改用deno task命令。import { runScript } from nypm; await runScript(build, { cwd: ./my-app }); // 传参 自定义环境变量 await runScript(test, { cwd: ./my-app, args: [--coverage], env: { NODE_ENV: test }, });参数详解参数类型默认值作用namestring必填脚本名package.json scripts 中的 keyargsstring[][]追加给脚本的参数envobjectprocess.env追加环境变量其余参数--cwd、silent、dry 等通用选项8. dlx()下载并执行临时包类似npx的体验不污染项目依赖临时下载并运行某个包。nypm 会自动选择正确的执行器npm exec/npx、pnpm dlx/pnpx、yarn dlx、bun x/bunx、deno run -A。import { dlx } from nypm; // 直接运行 await dlx(cowsay, { args: [Hello nypm!] }); // 使用短命令形式npx / pnpx / bunx await dlx(envinfo, { short: true, args: [--json] }); // 额外指定要注入的包 await dlx(tsx, { packages: [typescript], args: [script.ts] });参数详解参数类型默认值作用namestring必填要执行的包名argsstring[][]传给命令的参数shortbooleanfalse使用短命令npx、pnpx、bunx 等packagesstring[][]额外注入的其他包--package进阶玩法命令字符串生成器与 dry 模式除了直接执行nypm 还提供 4 个只生成命令字符串的函数src/cmd.ts方便你在自己的工具里拼接命令installDependenciesCommand(pm, { short, frozenLockFile })addDependencyCommand(pm, name, { dev, global, workspace, yarnBerry, short })runScriptCommand(pm, name, { args })dlxCommand(pm, name, { args, short, packages })import { installDependenciesCommand } from nypm; console.log(installDependenciesCommand(pnpm, { short: true })); // 输出pnpm i另外所有执行型函数都支持dry: true此时不会真正执行命令而是把将要运行的命令放在返回值中const result await addDependency(defu, { dry: true }); console.log(result.exec); // { command: pnpm, args: [add, defu] }返回值结构定义在 src/types.ts 的OperationResult类型中CLI 的--dry参数也正是基于此实现见 src/cli.ts。总结nypm API 快速上手清单场景推荐函数关键参数探测工具链detectPackageManagerincludeParentDirs安装依赖installDependenciesfrozenLockFile添加/卸载依赖addDependency/removeDependencydev、workspace兜底安装ensureDependencyInstalleddev清理重复dedupeDependenciesrecreateLockfile运行脚本runScriptargs、env临时执行dlxshort、packages所有函数都遵循同一套约定cwd指定目录、silent控制输出、dry模拟执行、packageManager手动覆盖自动检测。掌握这 8 个核心函数的用法与参数你就能在自己的 Node.js 工具、CLI 或构建脚本中用一套代码无缝驾驭所有主流包管理器从此告别一个项目一套命令的混乱局面 。【免费下载链接】nypm Unified Package Manager for Node.js (npm, pnpm, yarn), Bun, Deno, Nub, Aube.项目地址: https://gitcode.com/gh_mirrors/ny/nypm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考