Renommer un module NPM publié


96

Existe-t-il un moyen de renommer un module NPM qui a déjà été publié? Je souhaite modifier le nom de mon module pour qu'il corresponde plus précisément à l'API qu'il expose, mais je ne voudrais pas laisser les personnes qui l'ont déjà installé dans l'embarras.

Réponses:


123

Il n'y a aucun moyen exposé de le faire. Quand j'ai rencontré cela dans le passé, l'approche que j'ai adoptée était:

npm obsolète% ProjectName% @ "<= put-latest-version-here" "AVERTISSEMENT: Ce projet a été renommé% NewProjectName%. Installez à la place en utilisant% NewProjectName%."

npm Instructions obsolètes


18

En termes simples, non, vous ne pouvez pas. Mais npm vous propose une solution différente appelée npm deprecate.

Ce qu'il fait, c'est qu'il marque une version particulière ou des plages de versions de ce package comme obsolètes. Donc, si quelqu'un essaie d'installer ce package, il reçoit un package d'avertissement obsolète avec votre message personnalisé, dans lequel vous pouvez facilement spécifier votre nouveau nom de package.

Usage:

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

Votre message peut être n'importe quoi comme:

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

1
Il vaut probablement mieux utiliser <=plutôt que <pour qu'il notifie également la dernière version?
David Sherret

14

En moins de 24 heures, j'ai exécuté la commande suivante pour supprimer le mauvais paquet.

npm unpublish <wrong package name> --force

Ouais, cela fonctionne si le package vient d'être publié (sous 24 heures)
Moso Akinyemi

10

De la documentation:

Les données du registre sont immuables, ce qui signifie qu'une fois publiées, un package ne peut pas changer. Nous faisons cela pour des raisons de sécurité et de stabilité des utilisateurs qui dépendent de ces packages.

Cependant, les packages récemment publiés - dans les 72 heures - peuvent être annulés en exécutant:

npm unpublish <package_name> -f

Cela supprimera le package du registre NPM s'il a été publié il y a moins de 72 heures . Ensuite, vous pouvez modifier le nom de votre package et le publier à nouveau.

Attention: vous devez attendre 24 heures si vous essayez de republier le package avec le même nom


9

Quelqu'un a construit un petit plugin npm pratique pour faire cela facilement 😊

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

  1. Installez le package en utilisant npm -g install @tiaanduplessis/pkg-rename
  2. Renommez votre module npm dans le fichier package.json et enregistrez-le
  3. courir pkg-rename old-package-name

De la documentation:

Cela obtiendra la dernière version de l'ancien package de npm et rendra obsolète cette version et toutes les versions publiées précédentes avec un message:

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

Vous pouvez également ajouter l' --publishindicateur pour publier le nouveau nom de package dans le cadre de la même action.

pkg-rename old-package-name --publish

Rappelez - vous, renommer le package dans package.json d' abord , puis exécutez la pkg-renamecommande.


1
npm devrait avoir un nouveau slogan: gagner du temps aux développeurs javascript en tant que service
r3wt

1
notez que pkg-rename ne fonctionne pas si vous avez activé 2FA avec npm
Shazron

3

J'ai été une fois dans cette situation. J'ai publié un package avec le nom bowser-or-nodeau lieu de browser-or-node.

Il n'y a aucun moyen de renommer un package, vous devez abandonner et publier un nouveau package.

Bien qu'il existe une autre option. Si vous venez de publier votre package (moins de 24 heures après la publication) et que vous êtes sûr de vouloir supprimer le package et d'en publier un nouveau avec le bon nom, vous pouvez continuer et le faire. Mais NPM ne vous permettra pas de supprimer le package une fois que 24 heures se sont écoulées depuis la date de publication.

Heureusement, j'ai compris que j'avais publié avec le mauvais nom en moins de 20 minutes. Je viens donc de supprimer et de publier à nouveau avec un nouveau nom.


Intéressant, j'essaye de faire ça mais on me dit "Le nom du paquet est trop similaire aux paquets existants" - même si je viens de supprimer l'ancien.
Steve Bennett

Oh en fait dans mon cas, la similitude était avec un autre paquet, pas mon ancien.
Steve Bennett

-1

Quelque chose de merveilleux vient de m'arriver: j'ai réussi à renommer un paquet. Il était à l'origine connu sous le nom de stdout-renderer, mais j'ai changé toutes les occurrences possibles du nom, et je l'ai republié après avoir désapprouvé l'original et voilà, il apparaît sous son nouveau nom (cli-artist) non déprécié dans la liste nouvellement mise à jour. Je ne sais pas quel champ changer, mais j'imagine qu'il se trouve dans package.json car c'est le seul où le boîtier correspond dans mon cas.

J'espère que cela pourra aider!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.