npm 下架策略

本文档描述了你希望从公共注册表下架已发布包时的选择。

注册表数据是不可变的,这意味着一旦发布,包就不能更改。我们这样做是为了保障安全和稳定性,以确保依赖这些包的用户能够正常使用。因此,如果你曾经发布了一个名为“bob”的包,版本号为 1.1.0,那么其他任何包都不能再以这个名称和版本号发布。即使该包已被下架,也是如此。

但是,考虑到可能会发生意外情况,我们允许你在以下情况下下架包。否则,你始终可以弃用一个包。

发布不到 72 小时的包

对于新创建的包,只要 npm 公共注册表中的其他包不依赖于你的包,你就可以在发布后的前 72 小时内随时下架。

发布超过 72 小时的包

无论包发布了多久,只要满足以下所有条件,你就可以下架该包:

  • npm 公共注册表中的其他包不依赖于它
  • 它在过去一周内的下载量不到 300 次
  • 它只有一个所有者/维护者

如何下架

要下架单个包版本,请运行 npm unpublish <package_name>@<version>

如果所有包版本都可以下架,你可以运行 npm unpublish <package_name> --force 一次下架所有版本。

注意事项

  • 一旦 package@version 被使用过,你就不能再使用它了。即使你下架了旧版本,也必须发布新版本。
  • 下架包后,你将无法撤销下架操作。
  • 如果完全下架包的所有版本,你将无法发布该包的任何新版本,直到 24 小时后。

如果你的包不符合下架标准怎么办?

如果你的包不符合下架策略标准,我们建议你 弃用 该包。这样一来,包仍然可以下载,但每次下载包时都会发布一条明确的警告信息(你可以自己编写),并且还会在包的 npmjs.com 页面上发布该信息。用户将知道你不建议他们使用该包,但如果他们依赖它,他们的构建就不会中断。我们认为这在可靠性和作者控制之间取得了良好的平衡。

你可以从命令行中使用以下命令之一来实现这一点:

  • npm deprecate <package> "<message>" 弃用整个包
  • npm deprecate <package>@<version> "<message>" 弃用特定版本

如果整个包被弃用,包名称将从我们的搜索结果中删除。

关于下架策略的更多信息

本文档是对 下架程序、CLI 命令 下架文档"Changes to npm Unpublish Policy - January 2020" 博客文章的补充说明。

问题?

如果出于某种原因,你的包符合下架策略标准,但下架命令失败,或者你需要在弃用过程中获得帮助,请 联系我们的支持团队,我们将很乐意提供帮助。

如果你认为某个包违反了 npm 的条款或策略,例如我们的使用条款,请 联系我们的支持团队。如果某个包侵犯了你的版权,请 参考 npm 的 DMCA 下架政策。如果你认为某个包侵犯了你的隐私权,请尽快 联系我们的隐私团队

变更

本文档是一个动态文档,可能会不时更新。请参考 本文档的 git 历史记录 查看变更。

许可证

Copyright (C) npm, Inc., 保留所有权利

本文档可在 知识共享署名-相同方式共享许可证 下重复使用。