有没有办法重命名已经发布的NPM模块?我想更改我的模块的名称,以更准确地匹配它公开的API,但不想让已经安装它的人陷入困境。
5uzkadbs1#
没有任何公开的方法可以做到这一点。当我过去遇到这种情况时,我采取的方法是:npm deprecate %ProjectName%@"〈=put-latest-version-here”“警告:此项目已重命名为%NewProjectName%。请改用%NewProjectName%进行安装。”npm Deprecate instructions
wsewodh22#
简单地说,你不能。但是npm提供了一个不同的解决方案,叫做npm deprecate。它的作用是标记该软件包的一个特定版本或版本范围为deprecated,所以接下来如果有人试图安装这个软件包,他们会得到一个警告软件包deprecated沿着你的自定义消息,在其中你可以很容易地指定你的新软件包名称。使用方法:
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.
5kgi1eie3#
如果软件包发布时间小于24小时:
npm unpublish <wrong package name> --force
aoyhnmkz4#
来自文档:注册表数据是不可变的,这意味着一旦发布,软件包就不能改变。我们这样做是为了依赖这些软件包的用户的安全性和稳定性。但是,新发布的软件包(在72小时内)可以通过运行以下命令取消发布:
npm unpublish <package_name> -f
如果发布时间小于72小时,则会将该包从NPM注册表中删除。然后您可以更改包的名称并重新发布。注意:如果您尝试重新发布同名的软件包,则需要等待24小时
eoxn13cs5#
有人已经构建了一个方便的小npm插件来轻松做到这一点😊https://www.npmjs.com/package/@tiaanduplessis/pkg-rename1.使用npm -g install @tiaanduplessis/pkg-rename安装软件包1.在package.json文件中重命名npm模块并保存1.运行pkg-rename old-package-name来自文档:这将从npm获取旧包的最新版本,并通过消息弃用此版本和所有以前发布的版本:
npm -g install @tiaanduplessis/pkg-rename
pkg-rename old-package-name
WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
您还可以添加--publish标志来发布新的软件包名称,作为同一操作的一部分。
--publish
pkg-rename old-package-name --publish
记住,在package.json中重命名包首先,* 然后 * 运行pkg-rename命令。
pkg-rename
ubby3x7f6#
我曾经遇到过这种情况。我发布了一个名为bowser-or-node的包,而不是browser-or-node。没有办法重命名一个包,你必须弃用并发布一个新的包。不过还有一个选择。如果你刚刚发布了你的软件包(发布后不到24小时),并且你确定你可以删除这个软件包并发布一个新的软件包,你可以继续这样做。但是NPM不允许你在发布后24小时内删除这个软件包。幸运的是,我在不到20分钟的时间里就发现我用错误的名字发表了。所以我只是删除并用新的名字再次发表。
bowser-or-node
browser-or-node
k0pti3hp7#
一件奇妙的事情刚刚发生在我身上:我设法重命名了一个包。它最初被称为stdout-renderer,但我改变了每个可能出现的名称,并在弃用原始名称后重新发布,瞧,它以新名称(cli-artist)显示在新更新的列表中。我不确定要更改哪个字段,但我会想象它在package.json中,因为这是唯一一个在我的情况下匹配大小写的字段。希望有帮助!
7条答案
按热度按时间5uzkadbs1#
没有任何公开的方法可以做到这一点。当我过去遇到这种情况时,我采取的方法是:
npm deprecate %ProjectName%@"〈=put-latest-version-here”“警告:此项目已重命名为%NewProjectName%。请改用%NewProjectName%进行安装。”
npm Deprecate instructions
wsewodh22#
简单地说,你不能。但是npm提供了一个不同的解决方案,叫做
npm deprecate
。它的作用是标记该软件包的一个特定版本或版本范围为deprecated,所以接下来如果有人试图安装这个软件包,他们会得到一个警告软件包deprecated沿着你的自定义消息,在其中你可以很容易地指定你的新软件包名称。
使用方法:
您的消息可以是任何类似的内容:
5kgi1eie3#
如果软件包发布时间小于24小时:
aoyhnmkz4#
来自文档:
注册表数据是不可变的,这意味着一旦发布,软件包就不能改变。我们这样做是为了依赖这些软件包的用户的安全性和稳定性。
但是,新发布的软件包(在72小时内)可以通过运行以下命令取消发布:
如果发布时间小于72小时,则会将该包从NPM注册表中删除。然后您可以更改包的名称并重新发布。
注意:如果您尝试重新发布同名的软件包,则需要等待24小时
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获取旧包的最新版本,并通过消息弃用此版本和所有以前发布的版本:
您还可以添加
--publish
标志来发布新的软件包名称,作为同一操作的一部分。记住,在package.json中重命名包首先,* 然后 * 运行
pkg-rename
命令。ubby3x7f6#
我曾经遇到过这种情况。我发布了一个名为
bowser-or-node
的包,而不是browser-or-node
。没有办法重命名一个包,你必须弃用并发布一个新的包。
不过还有一个选择。如果你刚刚发布了你的软件包(发布后不到24小时),并且你确定你可以删除这个软件包并发布一个新的软件包,你可以继续这样做。但是NPM不允许你在发布后24小时内删除这个软件包。
幸运的是,我在不到20分钟的时间里就发现我用错误的名字发表了。所以我只是删除并用新的名字再次发表。
k0pti3hp7#
一件奇妙的事情刚刚发生在我身上:我设法重命名了一个包。它最初被称为stdout-renderer,但我改变了每个可能出现的名称,并在弃用原始名称后重新发布,瞧,它以新名称(cli-artist)显示在新更新的列表中。我不确定要更改哪个字段,但我会想象它在package.json中,因为这是唯一一个在我的情况下匹配大小写的字段。
希望有帮助!