重命名已发布的NPM模块

bgtovc5b  于 2023-04-12  发布在  其他
关注(0)|答案(7)|浏览(401)

有没有办法重命名已经发布的NPM模块?我想更改我的模块的名称,以更准确地匹配它公开的API,但不想让已经安装它的人陷入困境。

5uzkadbs

5uzkadbs1#

没有任何公开的方法可以做到这一点。当我过去遇到这种情况时,我采取的方法是:
npm deprecate %ProjectName%@"〈=put-latest-version-here”“警告:此项目已重命名为%NewProjectName%。请改用%NewProjectName%进行安装。”
npm Deprecate instructions

wsewodh2

wsewodh22#

简单地说,你不能。但是npm提供了一个不同的解决方案,叫做npm deprecate
它的作用是标记该软件包的一个特定版本或版本范围为deprecated,所以接下来如果有人试图安装这个软件包,他们会得到一个警告软件包deprecated沿着你的自定义消息,在其中你可以很容易地指定你的新软件包名称。
使用方法:

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.
5kgi1eie

5kgi1eie3#

如果软件包发布时间小于24小时:

npm unpublish <wrong package name> --force
aoyhnmkz

aoyhnmkz4#

来自文档:
注册表数据是不可变的,这意味着一旦发布,软件包就不能改变。我们这样做是为了依赖这些软件包的用户的安全性和稳定性。
但是,新发布的软件包(在72小时内)可以通过运行以下命令取消发布:

npm unpublish <package_name> -f

如果发布时间小于72小时,则会将该包从NPM注册表中删除。然后您可以更改包的名称并重新发布。
注意:如果您尝试重新发布同名的软件包,则需要等待24小时

eoxn13cs

eoxn13cs5#

有人已经构建了一个方便的小npm插件来轻松做到这一点😊
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
1.使用npm -g install @tiaanduplessis/pkg-rename安装软件包
1.在package.json文件中重命名npm模块并保存
1.运行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命令。

ubby3x7f

ubby3x7f6#

我曾经遇到过这种情况。我发布了一个名为bowser-or-node的包,而不是browser-or-node
没有办法重命名一个包,你必须弃用并发布一个新的包。
不过还有一个选择。如果你刚刚发布了你的软件包(发布后不到24小时),并且你确定你可以删除这个软件包并发布一个新的软件包,你可以继续这样做。但是NPM不允许你在发布后24小时内删除这个软件包。
幸运的是,我在不到20分钟的时间里就发现我用错误的名字发表了。所以我只是删除并用新的名字再次发表。

k0pti3hp

k0pti3hp7#

一件奇妙的事情刚刚发生在我身上:我设法重命名了一个包。它最初被称为stdout-renderer,但我改变了每个可能出现的名称,并在弃用原始名称后重新发布,瞧,它以新名称(cli-artist)显示在新更新的列表中。我不确定要更改哪个字段,但我会想象它在package.json中,因为这是唯一一个在我的情况下匹配大小写的字段。
希望有帮助!

相关问题