Yeoman Nedir? Ne Amaçla Kullanılır?
Yeni bir projeye başlandığında projenin yapısı, gerekli paketlerin belirlenmesi (sürümler ve bağımlılıkların değerlendirilmesi vb.), paketlerin development ve production için ilgili dosyalara (package.json, Gruntfile veya Gulpfile vb.) işlenmesi hem gereksiz bir vakit almakta hem de ilerleyen süreçte keyif kaçıran küçük sorunların da ortaya çıkmasına zemin oluşturabilmekte.
Elbette ekip içerisindeki değişiklikler, eski bir projenin yeniden gündeme gelmesi gibi durumlarda var olan yapıyı anlamak ve buna uygun adımlar atmak da ayrıca bir kaynak motivasyon tüketimi anlamına gelebilmekte. İşte bu gibi durumla için, ihtiyaçların otomatik bir şekilde sorular üzerinden yönetilmesini sağlayan bazı yardımcı uygulamalar mevcut. Bu vesile ile, sıklıkla adı geçen uygulamalardan biri olan Yeoman’dan bahsetmek istiyorum.
Yeoman
Yeoman, Node.js tabanlı bir scaffolding uygulaması. Scaffolding ifadesini yapi iskelesi olarak açıklayabiliriz. Temelde yaptığı şey, çeşitli amaçlar doğrultusunda oluşturulmuş eklentiler vasıtasıyla ihtiyaç duyulan yapının oluşturulabilmesi için ilgili bağımlılıkların ve konfigürasyonların yapılandırılmasını sağlamak. Bu eklentiler generator olarak ifade edilmekteler ve elbette her biri ayrı bir modül olarak NPM ve Yarn gibi paket yöneticiler aracılığıyla edinilmekteler. Örneğin, generator-ssm1 bir base generator; pug ve sass ile birlikte bootstrap yapısı üzerine front-end projelerin inşa edilebilmesini sağlamakta. Angular, React, Vue, Boostrap, Semantic UI ve benzeri daha pek çok araç ve platform için yayınlanan generator’lere Yeoman > Generators2 sayfasından ulaşabilirsiniz.
Kişisel olarak belirtmem gerekir ki Yeoman generator’lerinin çoğu güncelliğini kaybetmiş durumda ve bununla birlikte Bower gibi artık desteklenmeyen paket yöneticilere bağımlı durumdalar. Bu nedenle, birkaçı dışında, bir generator’e ulaştığınızda kurulum sürecinde hatalar almanız muhtemel. Bu sebeple, package.json
içeriklerine müdahale etmeniz gerekebilmekte.
Hemen bir örnek işlem ile Yeoman’ın nasıl işlediğine kısaca göz atalım. Örnek olarak da Node.js, React Native ve browser için bir REST ve gerçek zamanlı API katmanı olan Feathers.js uygulaması oluşturalım3. Projemizin adı newproject
olsun.
mkdir newproject && cd newproject
Node.js modülleri üzerinden işlemlerimizi yürüteceğimiz için Yarn ve/veya NPM kurulumlarımızdan birinin yapılmış olması gerekmekte. Ardından, Yeoman kurulumumuzu yapabiliriz. Ben kurulumun global olarak yapılmasını tavsiye ediyorum.
npm install -g yo
# ya da
yarn global add yo
Şimdi ilgili generator’u indirebiliriz.
npm install -g yo generator-feathers
# ya da
yarn global add yo generator-feathers
Generator kurulumunun ardından scaffolding sürecine geçebiliriz. Bu amaçla yo
komutu aracılığıyla generator’u işleme alacağız.
yo feathers
Generator’ün uygulanma sürecinde yapılandırma için bize şu sorular iletilecek:
* Description
* What folder should the source files live in?
* Which package manager are you using (has to be installed globally)?
* What type of API are you making? (Press <space> to select, <a> to toggle all, <i> to invert selection)
* Which testing framework do you prefer?
Projemizin hedefine bağlı olarak verdiğimiz cevapların ardından modüller proje dizini içerisinde package.json
dosyasına da işlenerek yapılandırılmaya başlanacak. İndirme ve yapılandırma işlemlerinin tamamlanması, klasörlerin ve dosyaların oluşturulmasının ardından uygulama taslağımızı görüntüleyebiliriz.
npm start
# ya da
yarn start
Evet, hepsi bu kadar.
Son Olarak
Görüldüğü üzere bir aracın / uygulamanın ayağa kaldırılabilmesi için gerekli olan tüm ihtiyaçlar generator’ler aracılığıyla tanımlanabilmekte ve hızlı bir şekilde uygulanabilmekte. Böylelikle, standart bir yapı oluşturularak tüm geliştiricilerin kolaylıkla anlayabileceği ve katkı sunabileceği bir ortam sağlanabilmekte. Elbette kendi ihtiyaçlarınız doğrultusunda da generator’ler hazırlayabilirsiniz. Bu konuya Vue.js uygulamaları bağlamında ayrıca değineceğim. Yeoman kullanımına dair daha teknik bilgiler ve çeşitli örnekler için Yeoman > Getting started with Yeoman ve Let’s scaffold a Web App with Yeoman yazılarını da incelemenizi hararetle öneririm.