面向 monorepo 的版本号与变更日志管理 CLI,通过贡献者随改动提交的 changeset 文件完成发版。
sindresorhus/np
对 npm publish 的增强命令行工具,发布前自动检查、升版本、打 Git 标签、跑测试并推送,一次交互完成发版。
- Star
- 7,710
- Fork
- 311
- 未关闭 Issue
- 7
- 最近提交
- 上个月
这是什么?
np 是一个命令行工具,用来替代手动发布 npm 包的一系列步骤。在项目中运行后,它会检查当前是否位于发布分支、工作区是否干净且与远程同步,以及 Node.js 和 npm 版本是否符合项目要求。随后它会重新安装依赖、运行测试、更新 package.json 和 package-lock.json 中的版本号、创建 Git 标签并发布到 npm。
发布失败时,np 会把项目回滚到之前的状态。发布成功后,它会推送提交和标签到 GitHub 或 GitLab,并可打开预填好内容的 GitHub Releases 草稿。它还会阻止预发布版本被误发到 latest 标签下,支持双因素认证,并提供 dry-run 模式,在不实际执行的情况下展示每个步骤。
np 支持 npm、pnpm、Bun 和 Yarn,可发布到 GitHub Packages 或自定义仓库。它面向本地交互式使用,不适合放在 CI 中,也不支持 monorepo。
核心功能
- 01发布前检查发布分支、工作区是否干净以及是否有未拉取的更改。
- 02自动更新 package.json 和 package-lock.json 中的版本并创建 Git 标签。
- 03发布前运行测试,发布失败时回滚项目状态。
- 04将提交和标签推送到 GitHub 或 GitLab,并可打开 Release 草稿。
- 05提供交互式界面和 dry-run 预览模式。
- 06支持 npm、pnpm、Bun 和 Yarn,并可发布到 GitHub Packages。
适用场景
- 在本地机器上按统一、带检查的流程向 npm 发布库。
- 在 package.json 中添加 release 脚本,让团队成员以相同方式发版。
- 将预发布版本发布到 beta 等独立 dist-tag,避免影响 latest。
- 通过跳过 npm 发布步骤,为私有 Git 仓库中的包完成版本与标签管理。
快速上手
- 1
使用 npm 全局安装 np
npm install --global np - 2
在项目目录中运行 np,并按交互提示操作
np
使用前须知
- 不支持 Monorepo。
- 不适合在 CI 中使用,设计上是作为本地交互工具使用。
- 需要 Node.js 22 或更高版本、npm 10 或更高版本以及 Git 2.11 或更高版本。
收录于专题
标签
常见问题
- np 是什么?
- 对 npm publish 的增强命令行工具,发布前自动检查、升版本、打 Git 标签、跑测试并推送,一次交互完成发版。 np 是一个命令行工具,用来替代手动发布 npm 包的一系列步骤。在项目中运行后,它会检查当前是否位于发布分支、工作区是否干净且与远程同步,以及 Node.js 和 npm 版本是否符合项目要求。随后它会重新安装依赖、运行测试、更新 package.json 和 package-lock.json 中的版本号、创建 Git 标签并发布到 npm。
- np 可以免费使用吗?用的什么许可证?
- np 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- np 还在维护吗?
- 半年内有更新。np 最近一次提交是在 2026年9月9日。
- np 适合用来做什么?
- 在本地机器上按统一、带检查的流程向 npm 发布库。 在 package.json 中添加 release 脚本,让团队成员以相同方式发版。 将预发布版本发布到 beta 等独立 dist-tag,避免影响 latest。 通过跳过 npm 发布步骤,为私有 Git 仓库中的包完成版本与标签管理。
- np 怎么安装和运行?
- 使用 npm 全局安装 np: npm install --global np 在项目目录中运行 np,并按交互提示操作: np
- 在哪里获取 np?
- 源代码和安装说明在 GitHub 上:https://github.com/sindresorhus/np
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个以 Windows 为主的图形界面,可统一管理 WinGet、Scoop、Chocolatey、Homebrew、APT、pip、npm 等多种包管理器。
离线 C++ 工具,通过反向 Alpha 混合去除图片中的 Gemini 可见水印,提供 GUI、CLI 与批处理。
一组简短、独立的 JavaScript 文章与代码片段,帮助开发者快速学习日常编程技巧。
基于 JavaScript 编写 Shell 风格脚本的工具,封装 child_process 并自动转义参数,兼容多平台。