重命名已发布的NPM模块

the*_*ott 81 npm

有没有办法重命名已发布的NPM模块?我想更改模块的名称,以便更准确地匹配它公开的API,但不希望将已安装它的人留在困境中.

Pet*_*ery 113

没有任何暴露的方法可以做到这一点.当我在过去遇到这个时,我采取的方法是:

npm弃用%ProjectName%@"<= put-latest-version-here""警告:此项目已重命名为%NewProjectName%.请改为使用%NewProjectName%安装."

npm弃用说明


小智 16

简单来说,不,你不能.但是,npm为您提供了一个不同的解决方案npm deprecate.

它的作用是将该软件包的特定版本或版本范围标记为已弃用.接下来,如果有人试图安装此软件包,他们会收到一条警告软件包以及您的自定义消息,您可以在其中轻松指定新的软件包名称.

用法:

npm deprecate my-package-name@"< latest-version" "your message"
Run Code Online (Sandbox Code Playgroud)

您的消息可以是以下任何内容:

WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.
Run Code Online (Sandbox Code Playgroud)

  • 使用 `&lt;=` 而不是 `&lt;` 可能更好,以便它也通知最新版本? (2认同)

Ned*_*rov 12

从文档:

注册表数据是不可变的,这意味着一旦发布,包就不能更改。我们这样做是出于对依赖这些软件包的用户的安全性和稳定性的考虑。

但是,新发布的软件包(在72 小时内)可以通过运行以下命令取消发布:

npm unpublish <package_name> -f
Run Code Online (Sandbox Code Playgroud)

如果软件包发布时间不到72 小时,这将从 NPM 注册表中删除该软件包。然后您可以更改包的名称并再次发布它。

注意:如果您尝试重新发布同名软件包,则需要等待 24 小时


Dan*_*non 12

有人已经构建了一个方便的小 npm 插件来轻松完成此操作

https://www.npmjs.com/package/@tiaanduplessis/pkg-rename

  1. 使用安装包 npm -g install @tiaanduplessis/pkg-rename
  2. 重命名 package.json 文件中的 npm 模块并保存
  3. pkg-rename old-package-name

从文档:

这将从 npm 获取旧包的最新版本,并使用消息弃用此版本和所有以前发布的版本:

WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
Run Code Online (Sandbox Code Playgroud)

您还可以添加--publish标志以作为同一操作的一部分发布新包名称。

pkg-rename old-package-name --publish
Run Code Online (Sandbox Code Playgroud)

请记住,首先在 package.json 中重命名包,然后运行pkg-rename命令。

  • npm 应该有一个新口号:*作为服务节省 javascript 开发人员的时间* (3认同)

She*_*hid 11

在不到24小时内,我按照以下命令删除错误的包.

npm unpublish <wrong package name> --force
Run Code Online (Sandbox Code Playgroud)

  • 是的,如果包刚刚发布(24 小时内),这有效 (3认同)