Repolode
sindresorhus

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. 1

    使用 npm 全局安装 np

    npm install --global np
  2. 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 数据每日更新。

相关项目