目录
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., 保留所有权利
本文档可在 知识共享署名-相同方式共享许可证 下重复使用。