Yayınlanmış bir UÖM modülünü yeniden adlandırma


97

Zaten yayınlanmış bir UÖM modülünü yeniden adlandırmanın bir yolu var mı? Modülümün adını, ortaya çıkardığı API ile daha doğru bir şekilde eşleşecek şekilde değiştirmek istiyorum, ancak onu zaten yüklemiş olan kişileri boşa çıkarmak istemiyorum.

Yanıtlar:


125

Bunu yapmanın açık bir yolu yok. Geçmişte bununla karşılaştığımda, benimsediğim yaklaşım şuydu:

npm kullanımdan kaldırıldı% ProjectName% @ "<= put-latest-version-here" "UYARI: Bu proje% NewProjectName% olarak yeniden adlandırıldı. Onun yerine% NewProjectName% kullanarak yükleyin."

npm Talimatları kaldır


19

Basit bir deyişle hayır yapamazsınız. Ancak npm size npm deprecate.

Yaptığı şey, bu paketin belirli bir sürümünü veya sürüm aralıklarını kullanımdan kaldırılmış olarak işaretlemesidir. Bundan sonra, biri bu paketi yüklemeye çalışırsa, yeni paket adınızı kolayca belirtebileceğiniz özel mesajınızla birlikte kullanımdan kaldırılmış bir uyarı paketi alır.

Kullanım:

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

Mesajınız şunun gibi herhangi bir şey olabilir:

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

1
Muhtemelen en son sürüm için de bildirimde bulunmak <=yerine kullanmak daha iyidir <?
David Sherret

15

24 saatten daha kısa bir sürede yanlış paketi silmek için aşağıdaki komutu çalıştırdım.

npm unpublish <wrong package name> --force

Evet, paket yeni yayınlanmışsa (24 saatin altında) bu işe yarar
Moso Akinyemi

11

Belgelerden:

Kayıt defteri verileri değişmezdir, yani bir kez yayınlandıktan sonra paket değiştirilemez. Bunu, bu paketlere bağımlı olan kullanıcıların güvenliği ve istikrarı için yapıyoruz.

Ancak yeni yayınlanan paketler - 72 saat içinde - aşağıdakiler çalıştırılarak yayından kaldırılabilir:

npm unpublish <package_name> -f

Bu, 72 saatten daha kısa bir süre önce yayınlanmışsa, paketi NPM kayıt defterinden kaldıracaktır . Ardından paketinizin adını değiştirebilir ve tekrar yayınlayabilirsiniz.

Dikkat: Aynı adı taşıyan paketi yeniden yayınlamaya çalışırsanız 24 saat beklemeniz gerekir.


10

Birisi bunu kolayca yapmak için kullanışlı küçük bir npm eklentisi geliştirdi 😊

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

  1. Paketi kullanarak kurun npm -g install @tiaanduplessis/pkg-rename
  2. Package.json dosyasında npm modülünüzü yeniden adlandırın ve kaydedin
  3. Çalıştırmak pkg-rename old-package-name

Belgelerden:

Bu, eski paketin en son sürümünü npm'den alacak ve bunu ve önceki tüm yayınlanmış sürümleri bir mesajla kullanımdan kaldıracaktır:

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

--publishYeni paket adını aynı eylemin bir parçası olarak yayınlamak için bayrağı da ekleyebilirsiniz .

pkg-rename old-package-name --publish

Unutmayın, önce package.json içindeki paketi yeniden adlandırın , ardındanpkg-rename komutu çalıştırın .


1
npm'nin yeni bir sloganı olmalı: javascript geliştiricilerinin zamanını hizmet olarak kaydetmek
r3wt

1
pkg-rename özelliğinin npm ile etkinleştirilmiş 2FA varsa çalışmayacağını unutmayın
Shazron

3

Bir zamanlar bu durumdaydım. Ben isimde bir paket yayınladı bowser-or-nodeyerine browser-or-node.

Bir paketi yeniden adlandırmanın bir yolu yoktur, kullanımdan kaldırmanız ve yeni bir paketi yayınlamanız gerekir.

Bir seçenek daha olmasına rağmen. Paketinizi yeni yayınladıysanız (yayınlanma tarihinden itibaren 24 saatten daha kısa bir süre sonra) ve paketi silmenin ve doğru adla yeni bir paket yayınlamanın uygun olduğundan eminseniz, devam edip bunu yapabilirsiniz. Ancak NPM, yayınlanma zamanının üzerinden 24 saat geçtikten sonra paketi silmenize izin vermez.

Neyse ki 20 dakikadan daha kısa bir süre içinde yanlış isimle yayınladığımı anladım. Bu yüzden sildim ve yeni bir isimle tekrar yayınladım.


İlginç, bunu yapmaya çalışıyorum ama bana "Paket adı mevcut paketlere çok benziyor" söylendi - eskisini silmiş olsam bile.
Steve Bennett

Oh aslında benim durumumda, benzerlik başka bir paketle oldu, eski paketimle değil.
Steve Bennett

-1

Az önce bana harika bir şey oldu: Bir paketi yeniden adlandırmayı başardım. Başlangıçta stdout-renderer olarak biliniyordu, ancak adın olası her oluşumunu değiştirdim ve orijinali kullanımdan kaldırdıktan sonra yeniden yayınladım ve yeni güncellenen listede yeni adı (cli-artist) altında gösterilmemiştir. Hangi alanın değiştirileceğinden emin değilim, ama pack.json içinde olacağını düşünürdüm çünkü benim durumumda kasanın eşleştiği tek alan bu.

umarım yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.