有没有办法重命名已经发布的NPM模块? 我想将我的模块名称更改为更准确地匹配其公开的API,但不想让已经安装它的人陷入困境。
有没有办法重命名已经发布的NPM模块? 我想将我的模块名称更改为更准确地匹配其公开的API,但不想让已经安装它的人陷入困境。
npm deprecate my-project-name@"<= latest-version" "This project has been renamed. Install using new-project-name instead."
例子:
npm deprecate my-thing@"<= 0.2.3" "This project has been renamed. Install using my-new-thing instead."
简单来说,不能直接删除一个 npm 包,但是 npm 提供了一种名为 npm deprecate
的不同解决方案。
它的作用是将某个特定版本或版本范围的包标记为已弃用。因此,下次有人尝试安装这个包时,他们会收到“包已弃用”的警告信息,以及您可以轻松指定新的包名称的自定义消息。
使用方法:
npm deprecate my-package-name@"< latest-version" "your message"
您的信息可以是任何内容,例如:
WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.
<=
而不是<
,这样它也会通知最新版本? - David Sherretnpm unpublish <wrong package name> --force
从文档中得知:
注册表数据是不可变的,这意味着一旦发布了包,就无法更改。我们出于安全和依赖于这些软件包的用户的稳定性原因采取这种措施。
然而,在72小时内新发布的软件包可以通过运行以下命令取消发布:
npm unpublish <package_name> -f
如果包是在72小时内发布的,这将从NPM注册表中删除该软件包。然后,您可以更改软件包的名称并再次发布。
注意:如果您尝试使用相同的名称重新发布软件包,则需要等待24小时。
有人为此构建了一个方便的 npm 插件,可以轻松地完成这个任务。
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
npm -g install @tiaanduplessis/pkg-rename
命令安装该包。pkg-rename old-package-name
命令。根据文档:
这将从 npm 获取旧软件包的最新版本,并使用消息废弃此版本及之前发布的所有版本:
你也可以添加WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
--publish
标志,将新的软件包名称作为同一操作的一部分发布。pkg-rename old-package-name --publish
记得先在 package.json 中重命名包名,然后运行
pkg-rename
命令。
我曾经也遇到过这种情况。我发布了一个名为bowser-or-node
而不是browser-or-node
的包。
没有办法重新命名一个包,你必须废弃并发布一个新的包。
尽管还有一种选择。如果你刚刚发布了你的包(距离发布时间少于24小时),并且你确定可以删除该包并以正确的名称发布一个新的包,那么你可以继续操作。但是,一旦发布24小时后,NPM将不允许你删除该包。
幸运的是,在不到20分钟的时间里,我发现我用错误的名称发布了包。所以我只是删除了它,并使用一个新名称再次发布了。
Npm撤销发布政策
只是补充一下其他用户提出的解决方案:
npm unpublish your-package-name -f
// then you can re-publish with a new name
只要满足以下条件,72小时后也可以生效:
来源:https://docs.npmjs.com/policies/unpublish
对不起,我将此作为答案而不是评论发布,因为我还没有足够的声望点来发表评论。
有件了不起的事情发生在我身上:我成功地重命名了一个包。它原本被称为stdout-renderer,但我更改了每个可能出现的名称,并在废弃原始名称后重新发布,然后它以新名称(cli-artist)出现在更新的列表中未被废弃。我不确定要更改哪个字段,但我想它应该在package.json中,因为在我的情况下,那是唯一与大小写匹配的字段。
希望这有所帮助!