I create accessible, user-friendly web applications with the best efficient solutions and best practices of the frontend world for SAAS projects. I`m currently working @smartgift
Download
Bu sefer NPM’de package publishing yaparken yaptığım hatalar, karşılaştığım sorunlar ve bulduğum çözümleri anlattığım bir yazı yazmak istiyorum. Aslında burada anlatacaklarımın bir çoğunu sizde merak edip araştırıp düşünmek ve challenge yaşamak zorunda kalacaksınız eğer günün birince bu işe deep dive girişecek olursanız.
Yaptığım hatalar
Özel isimle publish etmek & Version numarası kullanmak
Diyelim ki icon-generator diye özel ve güzel bir isime sahip bir library oluşturacağım. Bu libraryi npm’e direk olarak bu isimle pushlamak yerine daha sıradan icon-test-generator adıyla göndermek daha doğru olurdu. Ve ayrıca ben 1.0.0 gibi bir version numarası kullanmıştım package.json içinde. Buda bu özel isimle oluşturduğum packagenin bir daha asla bu version numarası ile yeniden publish edemeyeceğim anlamına geliyordu. Yani eğer oluşturduğunuz packageA kütüphanesini npm’e 1.0.0 version numarasıyla veya herhangi bir version numarası ile npm’e gönderirseniz bir daha bu packageyi npmden silseniz dahi aynı version numarası ile npme publish edemeyeceğiniz anlamına gelir. Yani version numarasını değişip tekrar publish etmeliyiz demek oluyor bu. :(
Test publishleri npm üzerinde yapmak
Evet buda işin bir diğer acı tarafı. Test publishlerimi aşağıdaki şu toolu bilene kadar hep npm üzerinde yaptım buda bana fazlaca maliyetli oldu nihayetinde. Siz bu hatayı yapmayın ve Verdaccio isimli local npm publish toolunu kullanarak oluşturduğunuz packageleri önce localde publsih edip sonuçlarını gözlemleyin.
Alpha - Beta - RC Releaseleri Yapmamak
İlla paketinizi npm’e veya bir bulut ortamına publish edecekseniz paketlerinizin çalışırlığından emin olmadan önce paketlerinizi kesinlikle alpha, beta, rc gibi stabil olmayan sürümlerle çıkartmalısınız. Bu hem bu sürümlerin halen test edildiğini hem bazı özelliklerinin çalışmıyor olabileceğini anlattığı için yanlış publishlerde bu versionlarla birlikte sorun olmayacaktır. Tabi ki eğer ufak tefek buglar yoksa major problemler varsa stabil veya fix versionları çıktıktan sonra bu sürümleri unpublish yapın yapamıyorsanızda deprecated yapın.
npm-version | npm Docs
*Prevents throwing an error when npm version is used to set the new version to the same value as the current version…*docs.npmjs.com
Summary
- npm’e sadece bir kere aynı versionu publish edebilirsiniz, unpublish etseniz dahi daha önce publish edilmiş bir versionu tekrar npm’e publish edemezsiniz.
- npm’e publish etmeden önce Verdaccio gibi local package managerlere publish ediniz.
- çalıştığına tam olarak emin olmadığınız packageleri alpha, beta veya rc gibi sürüm adları ile çıkınız.
Notes & Important Things
- unpublish policy’ye dikkat edin. Özetle bu yazının yazıldığı tarih itibari ile: (Değişebilir burası bu yüzden documentation tavsiye edilir)
- İlk publishden 72 saat içinde her hangi bir zaman
- Eğer 72 saat önceden publish edildiyse:
* son hafta 300 den az download edildiyse
* sadece 1 tane owner veya maintainera sahipse
* npmdeki diğer paketler bu pakete bağlı değilse
unpublish edilebilir. - Bu şartlar dışındakiler unpublish edilemez fakat profilinizde illada bu paketleri görmek istemiyorsanız, npm i maintainer olarak ekleyerek kendinizide maintainerlardan çıkartarak bu paketi npm’e devrederek profilinizden kaldırabilirsiniz. Böylece paket yine var olur ama en azından sizin üzerinizden ve profilinizden kalkmış olur.
- Belirli bir pacakge versionunu unpublish yapmak.
npm unpublish packageName@version
- Bütün packageyi unpublish yapmak. (-f force anlamında)
npm unpublish -f packageName@version
- Npm’i maintainer olarak pakete eklemek:
npm owner add npm package
- Paketten kendinizi maintainerlar arasından çıkartmak
npm owner rm username package
- Bütün bir paketi depracated yapmak.
npm deprecate packageName "message"
- Belirli bir paketi deprecated yapmak.
npm deprecate packageName@version "message"