有没有办法重命名已发布的NPM模块?我想更改模块的名称,以便更准确地匹配它公开的API,但不希望将已安装它的人留在困境中。
答案 0 :(得分:106)
没有任何暴露的方法可以做到这一点。当我在过去遇到这个时,我采取的方法是:
npm弃用%ProjectName%@“< = put-latest-version-here”“警告:此项目已重命名为%NewProjectName%。请使用%NewProjectName%安装。”
答案 1 :(得分:15)
简单来说,不,你不能。但是,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.
答案 2 :(得分:9)
在不到24小时内,我按照以下命令删除了错误的包裹。
npm unpublish <wrong package name> --force
答案 3 :(得分:2)
我曾经遇到过这种情况。我发布了一个名为bowser-or-node
的包,而不是browser-or-node
。
无法重命名包,您必须弃用并发布新包。
虽然还有另一种选择。如果您刚刚发布了您的软件包(发布时间不到24小时),并且如果您确定可以删除软件包并发布一个具有正确名称的新软件包,那么您可以继续执行此操作。但是,自发布之日起24小时内,NPM将不允许您删除该软件包。
幸运的是,我发现我在不到20分钟的时间内发布了错误的名字。所以我刚刚删除并以新名称再次发布。
答案 4 :(得分:2)
从文档中:
注册数据是不可变的,这意味着一旦发布,软件包就无法 更改。我们这样做是出于用户安全和稳定的原因 谁依赖那些软件包。
但是,可以在以下时间取消发布 72小时中的新发布的软件包:
npm unpublish <package_name> -f
如果软件包发布的时间少于 72小时,它将从NPM注册表中删除该软件包。然后,您可以更改包的名称,然后再次发布。
警告:如果您尝试重新发布软件包,则需要等待24小时 同名
答案 5 :(得分:0)
有人构建了一个方便的小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
请记住,首先pkg-rename
命令。
答案 6 :(得分:-2)
我身上发生了奇妙的事情:我设法重命名了一个程序包。它最初被称为stdout-renderer,但我更改了该名称的所有可能出现的位置,并在弃用了原始名称后重新发布了该名称,并以新名称(cli-artist)显示在新更新的列表中,不再使用。我不确定要更改哪个字段,但是我可以想象它在package.json中,因为在我的情况下,这是唯一与大小写匹配的字段。
希望有帮助!