Npm modül yapımı 2

Arif Cakiroglu

Amaç: Npm modül yapımı 1'in devamıdır.

Kaynak kod

Yapmış olduğumuz modülü npm’e register edip semantik versiyonlamaya göz atacağız. Semantik versiyonlama hakkında daha fazla bilgiye buradan ulaşabilirsiniz.


modul info

Npm Register

Öncelikle kullanıcı bilgilerimizi npm adduser ile ekliyoruz.

⏣ npm adduser
Username: arifcakiroglu
Password:
Email: (this IS public) cakirogluarif@gmail.com

npm setile bilgilerinizi npmrc dosyasına ekleyebilirsiniz. Bilgilerinize ~/.npmrc dosyasından ulaşabilirsiniz.

npm set init.author.name "Arif Cakiroglu"
npm set init.author.email "cakirogluarif@gmail.com"
npm set init.author.url "http://nodejs-dersleri.github.io"

Daha sonra oluşturduğumuz modül dizinine gidip npm publish ile kayıt işlemine başlıyoruz.

⏣ npm publish
+ guidify@0.1.0

Versiyonlama

Eğer versiyon değişikliği yapmadan tekrar göndermeye çalışırsak aşağıdaki gibi bir hata ile karşılaşırız.

npm ERR! publish Failed PUT 403
npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "publish"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! code E403

npm ERR! "You cannot publish over the previously published version 0.1.0." : guidify

Versiyon güncelleme yapıp denediğimizde yeni versiyonumuz npm’e ulaşmış oluyor.

⏣ npm publish
+ guidify@0.1.1

Beta versiyonlamak için de -beta takısını kullanabilirsiniz. Bu, modülünüzün latest versiyonu olarak kabul edilmeyecek ve modülünüz npm i -S guidifydiye çağırıldığında en son stable versiyonu inecektir. Eğer beta sürümünü kullanmak isterseniz npm i -S guidify@beta olarak indirebilirsiniz.

Not: Beta versiyonu çıkarken npm publish --tag beta publish işlemini beta olarak tagliyoruz.

⏣ npm publish --tag beta
+ guidify@1.1.0-beta.0

npm i -S guidify@beta
└── guidify@1.1.0-beta.0

npm info ile modülünüzün bilgilerine ulaşabilirsiniz. Aşağıda gördüğünüz gibi 'dist-tags': { latest: '1.1.1', beta: '1.1.1-beta.0' } dist-tags kısmına beta versiyonunu ekledi.

{ name: 'guidify',
  time:
   { modified: '2015-12-13T12:25:46.912Z',
     created: '2015-12-13T11:08:34.780Z',
     '0.1.0': '2015-12-13T11:08:34.780Z',
     '0.1.1': '2015-12-13T11:41:04.164Z',
     '1.0.1': '2015-12-13T11:59:07.267Z',
     '1.1.0': '2015-12-13T12:01:49.774Z',
     '1.1.0-beta.0': '2015-12-13T12:02:47.048Z',
     '1.1.1': '2015-12-13T12:25:08.334Z',
     '1.1.1-beta.0': '2015-12-13T12:25:46.912Z' },
  maintainers: [ 'arifcakiroglu <cakirogluarif@gmail.com>' ],
  'dist-tags': { latest: '1.1.1', beta: '1.1.1-beta.0' },
  description: 'Globally unique identifier',
  versions: [ '1.1.0', '1.1.1' ],
  homepage: 'https://github.com/arifcakiroglu/guidify#readme',
  keywords: [ 'unique', 'guid', 'guidify' ],
  repository:
   { type: 'git',
     url: 'git+https://github.com/arifcakiroglu/guidify.git' },
  author: 'Arif Cakiroglu <cakirogluarif@gmail.com>',
  bugs: { url: 'https://github.com/arifcakiroglu/guidify/issues' },
  license: 'MIT',
  readmeFilename: 'README.md',
  version: '1.1.1',
  main: 'index.js',
  scripts: { test: 'mocha -R spec -u tdd tests/*.js' },
  devDependencies: { mocha: '~1.14.0' },
  gitHead: '8bae71a00fdb58a085346f14e3882cd6f6dad7b8',
  dist:
   { shasum: '6e5fc5382effeab16753c4eedad0c55ddb28f072',
     tarball: 'http://registry.npmjs.org/guidify/-/guidify-1.1.1.tgz' },
  directories: {} }

Semantik versiyonlamak

Örnek kod:

test = {
  init: function(){
    this.mesasge = 'howoryu :)'
    return this;
  },
  get: function(){
    console.warn(this.message;
  }
}

1.0.1
^ MAJOR version: Uygulamanızın kullanıldığı yerlerde problem yaratabilecek değişikliklerin yapıldığı, genel değişikliklerin versiyonlanması için kullanılır.

Yukarıdaki kod parçaçığı üzerinden gidecek olursak örneğin:

get methodunu getMessage diye değiştirdiğinizde versiyonlamada köklü bir değişiklik yapıyorsunuz demektir. Önceki kullanımda get olarak kullanılan method, versiyon güncelleme ile artık programı kullanılamaz hale getirecektir.

1.0.1
—^ MINOR version: Uygulamanızın kullanımını kökten değiştirmeyecek ama yeni özellik olarak ekleyeceğiniz farklıklar için kullanılır.

Örneğin: get methodu gibi bir de setmethodu eklediğimizi düşünelim. Bu aşamada kullanıcılar uygulamanızda artık yeni bir özelliğin geldiğini bileceklerdir.

set: function(args){
  this.message = args
}

1.0.1
—–^ PATCH version: Uygulamanızda ki bug fixler için kullanılan kısım. yaptığınız herhangi bir problemi giderip versiyonlamanızı yapabilirsiniz.

get: function(){
  // console.warn(this.message;
  console.warn(this.message);
}

Semantik versiyonlama hakkında daha fazla bilgiye buradan ulaşabilirsiniz.

Sorularınız olursa yorum yapmaktan çekinmeyiniz efenim, saygılar.