Umbenennen eines veröffentlichten NPM-Moduls


94

Gibt es eine Möglichkeit, ein bereits veröffentlichtes NPM-Modul umzubenennen? Ich möchte den Namen meines Moduls ändern, um es genauer an die API anzupassen, die es verfügbar macht, möchte aber nicht, dass Personen, die es bereits installiert haben, im Stich gelassen werden.

Antworten:


122

Es gibt keine exponierte Möglichkeit, dies zu tun. Als ich dies in der Vergangenheit erlebt habe, war mein Ansatz:

npm veraltet% ProjectName% @ "<= neueste Version hier einfügen" "WARNUNG: Dieses Projekt wurde in% NewProjectName% umbenannt. Installieren Sie stattdessen mit% NewProjectName%."

npm Veraltete Anweisungen


18

In einfachen Worten, nein, das kannst du nicht. Aber npm bietet Ihnen eine andere Lösung namens npm deprecate.

Es markiert eine bestimmte Version oder Versionsbereiche dieses Pakets als veraltet. Wenn jemand versucht, dieses Paket zu installieren, wird als Nächstes ein veraltetes Warnpaket zusammen mit Ihrer benutzerdefinierten Nachricht angezeigt, in der Sie einfach Ihren neuen Paketnamen angeben können.

Verwendung:

npm deprecate my-package-name@"< latest-version" "your message"

Ihre Nachricht kann Folgendes sein:

WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.

1
Es ist wahrscheinlich besser zu verwenden, <=als <dass es auch für die neueste Version benachrichtigt?
David Sherret

14

In weniger als 24 Stunden habe ich den folgenden Befehl ausgeführt, um ein falsches Paket zu löschen.

npm unpublish <wrong package name> --force

Ja, das funktioniert, wenn das Paket gerade veröffentlicht wurde (unter 24 Stunden)
Moso Akinyemi

9

Aus der Dokumentation:

Registrierungsdaten sind unveränderlich, dh nach der Veröffentlichung kann sich ein Paket nicht mehr ändern. Wir tun dies aus Gründen der Sicherheit und Stabilität der Benutzer, die von diesen Paketen abhängig sind.

Neu veröffentlichte Pakete können jedoch innerhalb von 72 Stunden unveröffentlicht werden, indem Folgendes ausgeführt wird:

npm unpublish <package_name> -f

Dadurch wird das Paket aus der NPM-Registrierung entfernt, wenn es vor weniger als 72 Stunden veröffentlicht wurde. Anschließend können Sie den Namen Ihres Pakets ändern und erneut veröffentlichen.

Achtung: Sie müssen 24 Stunden warten, wenn Sie versuchen, ein Paket mit demselben Namen erneut zu veröffentlichen


7

Jemand hat ein praktisches kleines npm-Plugin dafür erstellt 😊

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

  1. Installieren Sie das Paket mit npm -g install @tiaanduplessis/pkg-rename
  2. Benennen Sie Ihr npm-Modul in der Datei package.json um und speichern Sie es
  3. Lauf pkg-rename old-package-name

Aus der Dokumentation:

Dadurch wird die neueste Version des alten Pakets von npm abgerufen und diese und alle zuvor veröffentlichten Versionen mit einer Meldung verworfen:

WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.

Sie können auch das --publishFlag hinzufügen , um den neuen Paketnamen als Teil derselben Aktion zu veröffentlichen.

pkg-rename old-package-name --publish

Denken Sie daran, benennen Sie das Paket in package.json zuerst , dann das ausführen pkg-renameBefehl.


1
npm sollte einen neuen Slogan haben: Javascript-Entwickler Zeit als Service
sparen

1
Beachten Sie, dass pkg-
rename

3

Ich war einmal in dieser Situation. Ich habe bowser-or-nodestattdessen ein Paket mit dem Namen veröffentlicht browser-or-node.

Es gibt keine Möglichkeit, ein Paket umzubenennen. Sie müssen ein neues Paket ablehnen und veröffentlichen.

Obwohl es noch eine andere Option gibt. Wenn Sie gerade Ihr Paket veröffentlicht haben (weniger als 24 Stunden ab dem Zeitpunkt der Veröffentlichung) und sicher sind, dass Sie das Paket löschen und ein neues mit dem richtigen Namen veröffentlichen können, können Sie dies tun. Mit NPM können Sie das Paket jedoch nicht löschen, sobald es 24 Stunden seit der Veröffentlichung vergangen ist.

Zum Glück habe ich herausgefunden, dass ich in weniger als 20 Minuten mit dem falschen Namen veröffentlicht habe. Also habe ich gerade gelöscht und wieder mit einem neuen Namen veröffentlicht.


Interessant, ich versuche das zu tun, aber mir wird gesagt "Paketname zu ähnlich zu vorhandenen Paketen" - obwohl ich gerade das alte gelöscht habe.
Steve Bennett

Oh, in meinem Fall war die Ähnlichkeit mit einem anderen Paket, nicht mit meinem alten.
Steve Bennett

-1

Mir ist gerade etwas Wunderbares passiert: Ich habe es geschafft, ein Paket umzubenennen. Es war ursprünglich als stdout-renderer bekannt, aber ich habe jedes mögliche Vorkommen des Namens geändert und es erneut veröffentlicht, nachdem ich das Original veraltet hatte und voila es unter seinem neuen Namen (cli-artist) angezeigt wurde, der in der neu aktualisierten Liste nicht veraltet ist. Ich bin mir nicht sicher, welches Feld ich ändern soll, aber ich würde mir vorstellen, dass es in package.json enthalten ist, da dies das einzige ist, bei dem das Gehäuse in meinem Fall übereinstimmt.

hoffentlich hilft das!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.