Npm modül yapımı 2
Amaç: Npm modül yapımı 1'in devamıdır.
Kaynak kodYapmış olduğumuz modülü npm’e register edip semantik versiyonlamaya göz atacağız. Semantik versiyonlama hakkında daha fazla bilgiye buradan ulaşabilirsiniz.

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 betapublish 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.