npm 包的分阶段发布

Lobsters Hottest 工具

摘要

npm 引入了分阶段发布功能,允许包维护者在更新上线前通过双因素认证进行审核和批准,从而增强安全性。

<p><a href="https://lobste.rs/s/lgflsz/staged_publishing_for_npm_packages">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/05/21 06:33

# npm 包的暂存发布 | npm 文档 来源:https://docs.npmjs.com/staged-publishing/ 目录- 暂存发布的工作原理 (https://docs.npmjs.com/staged-publishing/#how-staged-publishing-works) - 前提条件 (https://docs.npmjs.com/staged-publishing/#prerequisites) - 暂存一个包 (https://docs.npmjs.com/staged-publishing/#stage-a-package) - - - 使用 CLI (https://docs.npmjs.com/staged-publishing/#using-the-cli) - 使用 npmjs\.com (https://docs.npmjs.com/staged-publishing/#using-npmjscom) - - - 使用 CLI (https://docs.npmjs.com/staged-publishing/#using-the-cli-1) - 使用 npmjs\.com (https://docs.npmjs.com/staged-publishing/#using-npmjscom-1) - 将暂存发布与可信发布者配合使用 (https://docs.npmjs.com/staged-publishing/#using-staged-publishing-with-trusted-publishers) - 了解更多 (https://docs.npmjs.com/staged-publishing/#learn-more) 暂存发布在包上线到 npm 注册表之前增加了一个审批步骤。您无需直接使用 `npm publish` 发布,而是可以通过 `npm stage publish` 将包提交到暂存区。然后,维护者必须通过 CLI 或 npmjs\.com (https://www.npmjs.com/) 使用双因素认证 (2FA) 审查并显式批准暂存的包,之后该包才会公开发布。当您希望在包版本在注册表上可用之前增加额外的审查步骤时,暂存发布非常有用。 **注意:** 暂存发布需要 npm CLI (https://docs.npmjs.com/cli/v11) 版本 11.15.0 或更高,以及 Node 版本 22.14.0 或更高。 ## 暂存发布的工作原理 (https://docs.npmjs.com/staged-publishing/#how-staged-publishing-works) 暂存发布包含三个步骤: 1. [暂存一个包](https://docs.npmjs.com/staged-publishing/#stage-a-package) 2. [审查暂存的包](https://docs.npmjs.com/staged-publishing/#review-a-staged-package) 3. [批准暂存的包](https://docs.npmjs.com/staged-publishing/#approve-a-staged-package) ## 前提条件 (https://docs.npmjs.com/staged-publishing/#prerequisites) 使用暂存发布前,请确保满足以下条件: - 您对该包具有**发布权限** - 该包**已存在于** npm 注册表中——您不能暂存一个全新的包 - 您的 npm 账户**已启用 2FA** ## 暂存一个包 (https://docs.npmjs.com/staged-publishing/#stage-a-package) 1. 在命令行中,导航到包的根目录。 ``` cd /path/to/package ``` 2. 要暂存您的包,运行: ``` npm stage publish ``` 这会提交您的包到暂存区。 **注意:** `npm stage publish` 不需要 2FA。 ## 审查暂存的包 (https://docs.npmjs.com/staged-publishing/#review-a-staged-package) 暂存包后,您可以在 CLI 或 npmjs\.com (https://www.npmjs.com/) 上审查它。 ### 使用 CLI (https://docs.npmjs.com/staged-publishing/#using-the-cli) 列出您有权限访问的暂存包: ``` npm stage list [<package-name>] ``` 查看特定暂存包的详细信息: ``` npm stage view <package-name> ``` 下载暂存包的 tarball 以进行检查: ``` npm stage download <package-name> ``` ### 使用 npmjs\.com (https://docs.npmjs.com/staged-publishing/#using-npmjscom) 打开**暂存包**选项卡以审查暂存的包,并找到您想要批准的包。 截图显示 npmjs.com 上的暂存包选项卡,其中有待审查的暂存包 ## 批准暂存的包 (https://docs.npmjs.com/staged-publishing/#approve-a-staged-package) 要将暂存的包发布到注册表,请使用 2FA 批准它。 ### 使用 CLI (https://docs.npmjs.com/staged-publishing/#using-the-cli-1) 要批准暂存的包并将其发布到线上注册表: ``` npm stage approve <package-name> ``` ### 使用 npmjs\.com (https://docs.npmjs.com/staged-publishing/#using-npmjscom-1) 在 npmjs\.com (https://www.npmjs.com/) 上,在**暂存包**选项卡中审查该暂存包,然后点击**批准**。 截图显示 npmjs.com 上的一个暂存包,并显示批准按钮 **注意:** 无论您是通过 CLI 还是 npmjs\.com (https://www.npmjs.com/) 批准包,系统都会提示您进行 2FA 验证。 ## 将暂存发布与可信发布者配合使用 (https://docs.npmjs.com/staged-publishing/#using-staged-publishing-with-trusted-publishers) 如果您在 CI/CD 中使用[可信发布 (OIDC)](https://docs.npmjs.com/trusted-publishers),则可以使用暂存发布在包上线之前提交以供审查。维护者仍必须使用 2FA 审查并批准暂存的包。 有关配置可信发布者权限的更多信息,请参阅“[npm 包的可信发布](https://docs.npmjs.com/trusted-publishers#configuring-allowed-actions)”。 ## 了解更多 (https://docs.npmjs.com/staged-publishing/#learn-more) - [npm 包的可信发布](https://docs.npmjs.com/trusted-publishers) - [生成出处声明](https://docs.npmjs.com/generating-provenance-statements) ## 目录 - [暂存发布的工作原理](https://docs.npmjs.com/staged-publishing/#how-staged-publishing-works) - [前提条件](https://docs.npmjs.com/staged-publishing/#prerequisites) - [暂存一个包](https://docs.npmjs.com/staged-publishing/#stage-a-package) - [审查暂存的包](https://docs.npmjs.com/staged-publishing/#review-a-staged-package) - [批准暂存的包](https://docs.npmjs.com/staged-publishing/#approve-a-staged-package) - [将暂存发布与可信发布者配合使用](https://docs.npmjs.com/staged-publishing/#using-staged-publishing-with-trusted-publishers) - [了解更多](https://docs.npmjs.com/staged-publishing/#learn-more)

相似文章

npm 的分阶段发布和新的安装时控制

Hacker News Top

npm 引入了分阶段发布,要求通过双因素认证(2FA)进行人工审批才能发布包,并新增了 `--allow-*` 标志(file、remote、directory)来控制安装源,从而提高了 npm CLI 11.15.0 的供应链安全性。

人人都该从 npmx 偷学的功能

Lobsters Hottest

npmx 是一个 MIT 授权的 npm 仓库替代前端,它在安全与可用性上做了增强:展示传递式安装体积、暴露安装脚本、可视化过期/含漏洞依赖树,还逼得 npmjs.com 终于上线了深色模式。