Yeoman Kullanımı
Yeoman ile kendi proje yapımızı kurgulayabilir ve opsiyonlar belirleyerek ona göre dosya içeriğimizi vs. düzenleyebiliriz. Ya da oluşturduğumuz projeye önceden belirlediğimiz bir dosyayı ekleyebilir ve gerekli ayarlamaları otomatik olarak yapmasını sağlayabiliriz. (yeni bir Controller eklemek gibi vs.)
Ve hazırladığımız bu proje yapısını paket yönetim sistemlerine yollayarak diğer kişilerin kullanımına açabilir veyahut kendimizin de istediğimiz yerden erişebilmesini sağlayabiliriz.
Öncelikle bilgisayarınız da nodejs yüklü olduğunu varsayıyoruz. Eğer yüklü değilse buradan gerekli işlemleri yaparak kurabiliriz.
Daha sonra npm install -g yo
komutunu çalıştırarak yo
komutunun heryerden çalışmasını sağlıyoruz.
- Generators, diğer kişilerin oluşturmuş olduğu yapıları görmek için kullanabiliriz.
Evet kendi proje yapımızı hazırlamaya başlayabiliriz
Öncelikle yine Yeoman ın kendisini kullanarak yeni yapımızı kurmak için gerekli dosyaların yapılanmasını sağlıyoruz.
Bunun için npm install -g generator-generator
komutunu çalıştırıyoruz.
Ve yo generator
komutu ile gerekli dosya yapısının oluşturulmasını sağlıyoruz.
yo generator
komutunu çalıştırdığımız da bize proje ismi (name) gibi sorular gelecek ve bizde uygun değerleri girerek dosyaların ona göre düzenlemesini sağlıcaz. Ama name değerini girerken generators ile başladığına emin olmalıyız.
Ayrıntılı bilgi burada.
Ve oluşturulan dosya yapısı şu şekilde olmalı;
app/templates klasörü altındaki tüm dosyalar bizim asıl oluşturmak istediğimiz dosya yapısı. Yani tüm bu işlemler sonrasında yo xyz
çalıştırdığımız da templates klasöründe ki dosyalar oluşturulacaktır.
Tabi ki bizim belirlediğimiz değerler ile bu dosyaların içeriği vs. oluşturulacak. Yoksa bi anlamı kalmaz dimi ;)
Yukarıda ki resimde a,b,dummytext .txt ve testFolder klasörünü görüyorsunuz.
a.txt
Merhaba A
Proje ismi : <%= name %>
b.txt
Dosya B
Değişken değer: <%= degiskenB %>
dummy.txt
Dummy
dosya içeriklerinin bu şekilde olduğunu varsayalım.
app/index.js dosyasını açıyoruz ve gerekli düzenlemeleri yapıyoruz.
'use strict';
var Generator = require('yeoman-generator');
var chalk = require('chalk'); // yazı renklendirme için kullanılır
var yosay = require('yosay'); // yeoman çalıştırılırken ilk başta gözüken proje bilgilendirme kısmını hazırlamaka için kullanılır
module.exports = Generator.extend({
prompting: function () {
var done = this.async();
this.log(yosay(
'Aykut Asil proje oluşturma yapısına Hoş Geldiniz... ' +
chalk.red('generator-sample-yeoman') +
' generator!'
));
var prompts = [{
type: 'confirm',
name: 'someAnswer',
message: 'www.aykutasil.com u ziyaret ettin mi ?',
default: true
}, {
type: 'input',
name: 'name',
message: 'Proje adı',
default: this.appname
}, {
type: 'input',
name: 'degiskenB',
message: 'B name',
default: this.appname
}];
return this.prompt(prompts).then(function (props) {
this.props = props;
this.log(props.someAnswer);
this.log(props.name);
done();
}.bind(this));
},
writing: {
config: function () {
this.fs.copyTpl( // Eğer hazırlanan dosya içerisinde değişken kullanılmış ise copyTpl ile kopyalama yapılır
this.templatePath('a.txt'),
this.destinationPath('a.txt'), {
name: this.props.name
}
);
this.fs.copyTpl(
this.templatePath('b.txt'),
this.destinationPath('b.txt'), {
degiskenB: this.props.degiskenB
}
);
this.fs.copy( // Hazırlanacak dosya aynen kopyalama yapılacak ise yani dosya içerisinde değişken ile doldurulacak bir bölüm yok ise
// copy ile kopyalama yapılır
this.templatePath('dummyfile.txt'),
this.destinationPath('dummyfile.txt')
);
this.fs.copy(
this.templatePath('testFolder/_test.txt'),
this.destinationPath('testFolderDeneme/test.txt')
);
}
},
install: function () {
// this.installDependencies(); // tüm dosyala kopyalandıktan sonra npm init çalıştırılması için kullanılır. Eğer çalıştırılmazsa node_modules klasörü oluşturulmamış olur.
}
});
Yukarıda kodların yanında ayrıntılı açıklama var.
İşlemlerimizi tamamladıktan sonra local imizde test etmek ya da kullanabilmek için npm link
komutunu çalıştırıyoruz.(ana klasör içerisinde iken çalıştırıyoruz)
Ve herhangi bir yerde yeni bir klasör oluşturalım.
Klasör içerisindeyken yo sample_generator
komutunu çalıştıralım.
Ve sonuç:
Ek Kaynaklar