Zmiana nazwy opublikowanego modułu NPM


97

Czy istnieje sposób zmiany nazwy modułu NPM, który został już opublikowany? Chcę zmienić nazwę mojego modułu, aby dokładniej pasowała do interfejsu API, który ujawnia, ale nie chciałbym zostawiać ludzi, którzy już go zainstalowali.

Odpowiedzi:


125

Nie ma na to żadnego widocznego sposobu. Kiedy spotkałem się z tym w przeszłości, podejście, które zastosowałem, brzmiało:

npm deprecate% ProjectName% @ "<= put-latest-version-here" "OSTRZEŻENIE: Nazwa tego projektu została zmieniona na% NewProjectName%. Zamiast tego zainstaluj za pomocą% NewProjectName%."

npm Wycofaj instrukcje


19

Krótko mówiąc, nie możesz. Ale npm zapewnia inne rozwiązanie o nazwie npm deprecate.

Oznacza to, że oznacza określoną wersję lub zakresy wersji tego pakietu jako przestarzałe. Więc następnie, jeśli ktoś spróbuje zainstalować ten pakiet, otrzyma pakiet ostrzegawczy, który jest przestarzały, wraz z Twoją niestandardową wiadomością, w której możesz łatwo określić nową nazwę pakietu.

Stosowanie:

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

Twoja wiadomość może wyglądać następująco:

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

1
Prawdopodobnie lepiej jest używać <=niż <powiadamiać o najnowszej wersji?
David Sherret

15

W mniej niż 24 godziny uruchomiłem następujące polecenie, aby usunąć niewłaściwy pakiet.

npm unpublish <wrong package name> --force

Tak, to działa, jeśli pakiet został właśnie opublikowany (poniżej 24 godzin)
Moso Akinyemi

11

Z dokumentacji:

Dane rejestru są niezmienne, co oznacza, że ​​po opublikowaniu pakiet nie może ulec zmianie. Robimy to ze względu na bezpieczeństwo i stabilność użytkowników, którzy polegają na tych pakietach.

Jednak nowo opublikowane pakiety - w ciągu 72 godzin - można cofnąć publikację, uruchamiając:

npm unpublish <package_name> -f

Spowoduje to usunięcie pakietu z rejestru NPM, jeśli został opublikowany mniej niż 72 godziny temu. Następnie możesz zmienić nazwę pakietu i ponownie go opublikować.

Uwaga: Musisz odczekać 24 godziny, jeśli próbujesz ponownie opublikować pakiet o tej samej nazwie


10

Ktoś stworzył małą, poręczną wtyczkę npm ułatwiającą to doing

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

  1. Zainstaluj pakiet za pomocą npm -g install @tiaanduplessis/pkg-rename
  2. Zmień nazwę modułu npm w pliku package.json i zapisz go
  3. biegać pkg-rename old-package-name

Z dokumentacji:

Spowoduje to pobranie najnowszej wersji starego pakietu z npm i wycofanie tej i wszystkich wcześniej opublikowanych wersji z komunikatem:

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

Możesz również dodać --publishflagę, aby opublikować nową nazwę pakietu w ramach tej samej akcji.

pkg-rename old-package-name --publish

Pamiętaj, najpierw zmień nazwę pakietu w package.json , a następnie uruchom pkg-renamepolecenie.


1
npm powinien mieć nowy slogan: oszczędzanie czasu programistów javascript jako usługi
r3wt

1
zauważ, że pkg-rename nie działa, jeśli masz włączone 2FA z npm
Shazron

3

Kiedyś byłem w takiej sytuacji. Opublikowałem pakiet z nazwą bowser-or-nodezamiast browser-or-node.

Nie ma możliwości zmiany nazwy pakietu, musisz zrezygnować i opublikować nowy pakiet.

Chociaż jest jeszcze jedna opcja. Jeśli właśnie opublikowałeś swój pakiet (mniej niż 24 godziny od czasu publikacji) i jesteś pewien, że zgadzasz się na usunięcie pakietu i opublikowanie nowego o właściwej nazwie, możesz to zrobić. Ale NPM nie pozwoli ci usunąć pakietu, gdy minęły 24 godziny od czasu publikacji.

Na szczęście zorientowałem się, że opublikowałem pod złym nazwiskiem w mniej niż 20 minut. Dlatego właśnie usunąłem i opublikowałem ponownie pod nową nazwą.


Interesujące, próbuję to zrobić, ale otrzymuję komunikat „Nazwa pakietu jest zbyt podobna do istniejących pakietów” - mimo że właśnie usunąłem stary.
Steve Bennett

Och, właściwie w moim przypadku podobieństwo było do innego opakowania, a nie do mojego starego.
Steve Bennett

-1

Przydarzyło mi się coś cudownego: udało mi się zmienić nazwę pakietu. Pierwotnie był znany jako stdout-renderer, ale zmieniłem każde możliwe wystąpienie tej nazwy i opublikowałem go ponownie po wycofaniu oryginału i voila, pojawia się pod nową nazwą (cli-artist), która nie jest przestarzała na nowo zaktualizowanej liście. Nie jestem pewien, które pole zmienić, ale wyobrażam sobie, że będzie to package.json, ponieważ jest to jedyne, w którym obudowa pasowała w moim przypadku.

mam nadzieję, że to pomoże!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.