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 set
ile 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 guidify
diye ç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 set
methodu 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.