Mucahid Yazar
mucahid.dev

Follow

mucahid.dev

Follow
NPM - Package Publishing Notes & Policy

NPM - Package Publishing Notes & Policy

Mucahid Yazar's photo
Mucahid Yazar
·Jul 30, 2021·

3 min read

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](https://docs.npmjs.com/cli/v7/commands/npm-version "docs.npmjs.com/cli/v7/commands/npm-version")

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"
 
Share this