Apakah ada cara untuk mengganti nama modul NPM yang telah diterbitkan? Saya ingin mengubah nama modul saya agar lebih cocok dengan API yang diekspos tetapi tidak ingin membiarkan orang yang telah menginstalnya dalam kesulitan.
Apakah ada cara untuk mengganti nama modul NPM yang telah diterbitkan? Saya ingin mengubah nama modul saya agar lebih cocok dengan API yang diekspos tetapi tidak ingin membiarkan orang yang telah menginstalnya dalam kesulitan.
Jawaban:
Tidak ada cara untuk melakukan itu. Ketika saya mengalami ini di masa lalu, pendekatan yang saya ambil adalah:
npm deprecate% ProjectName% @ "<= put-latest-version-here" "PERINGATAN: Proyek ini telah diganti namanya menjadi% NewProjectName%. Instal menggunakan% NewProjectName% sebagai gantinya."
Dengan kata sederhana tidak, Anda tidak bisa. Tetapi npm memberi Anda solusi berbeda yang disebut npm deprecate.
Apa yang dilakukannya adalah menandai versi atau rentang versi tertentu dari paket itu sebagai usang. Jadi selanjutnya jika seseorang mencoba menginstal paket ini, mereka mendapatkan paket peringatan yang tidak digunakan lagi bersama dengan pesan kustom Anda, di mana Anda dapat dengan mudah menentukan nama paket baru Anda.
Pemakaian:
npm deprecate my-package-name@"< latest-version" "your message"
Pesan Anda bisa berupa:
WARNING: This project has been renamed to your-new-package-name. Install using new-package-name instead.
Dalam waktu kurang dari 24 jam saya menjalankan perintah berikut untuk menghapus paket yang salah.
npm unpublish <wrong package name> --force
Dari dokumentasi:
Data registri tidak dapat diubah, artinya setelah dipublikasikan, paket tidak dapat diubah. Kami melakukan ini untuk alasan keamanan dan stabilitas pengguna yang bergantung pada paket tersebut.
Namun paket yang baru diterbitkan - dalam 72 jam - dapat dibatalkan publikasinya dengan menjalankan:
npm unpublish <package_name> -f
Ini akan menghapus paket dari registri NPM jika diterbitkan kurang dari 72 jam yang lalu. Kemudian Anda dapat mengubah nama paket Anda dan menerbitkannya lagi.
Perhatian: Anda harus menunggu 24 jam jika Anda mencoba menerbitkan ulang paket dengan nama yang sama
Seseorang telah membuat plugin npm kecil yang berguna untuk melakukan ini dengan mudah 😊
https://www.npmjs.com/package/@tiaanduplessis/pkg-rename
npm -g install @tiaanduplessis/pkg-renamepkg-rename old-package-nameDari dokumentasi:
Ini akan mendapatkan versi terbaru dari paket lama dari npm dan menghentikan ini dan semua versi yang diterbitkan sebelumnya dengan pesan:
WARNING: This project has been renamed to new-package-name. Install using new-package-name instead.
Anda juga dapat menambahkan --publishbendera untuk menerbitkan nama paket baru sebagai bagian dari tindakan yang sama.
pkg-rename old-package-name --publish
Ingat, ganti nama paket di package.json terlebih dahulu , lalu jalankan pkg-renameperintah.
Saya pernah berada dalam situasi ini. Saya menerbitkan paket dengan nama, bowser-or-nodebukan browser-or-node.
Tidak ada cara untuk mengganti nama paket, Anda harus menghentikan dan menerbitkan paket baru.
Meski ada satu opsi lain. Jika Anda baru saja mempublikasikan paket Anda (kurang dari 24 jam dari waktu publikasi) dan jika Anda yakin tidak masalah dengan menghapus paket dan mempublikasikan yang baru dengan nama yang benar, Anda dapat melanjutkan dan melakukannya. Tetapi NPM tidak akan mengizinkan Anda untuk menghapus paket setelah 24 jam sejak waktu publikasi.
Untungnya saya menemukan bahwa saya menerbitkan dengan nama yang salah dalam waktu kurang dari 20 menit. Jadi saya baru saja menghapus dan menerbitkan lagi dengan nama baru.
Sesuatu yang luar biasa baru saja terjadi pada saya: Saya berhasil mengganti nama paket. Ini pada awalnya dikenal sebagai stdout-renderer, tetapi saya mengubah setiap kemungkinan kemunculan nama, dan menerbitkannya kembali setelah tidak menggunakan aslinya dan voila itu muncul dengan nama barunya (cli-artist) tidak berlaku lagi dalam daftar yang baru diperbarui. Saya tidak yakin bidang mana yang harus diubah, tetapi saya membayangkannya ada di package.json karena hanya itu yang casingnya cocok dengan kasus saya.
semoga membantu!
<=daripada<memberi tahu versi terbaru juga?