Zamandan Tasarruf Ettiren Görev Çalıştırıcısı, Grunt

Grunt

Yazılım geliştiricilerin sürekli yapması gereken ve kendini tekrar eden bazı sıkıcı görevleri vardır. Bu bazen dosya sıkıştırmak, bazen de kod derlemek olabiliyor ve geliştiriciler bunları her seferinde tekrar tekrar yaparak gereksiz bir zaman kaybı yaşıyor.

Grunt ile sıkıştırma, derleme, birim test, kod doğrulama, sprite oluşturma, imaj küçültme vb tekrarlanan işleri yaparken daha az iş yaparsınız ve bu işleri yapmak artık külfet olmaktan çıkar.

Grunt, Node.js ile birlikte çalışan bir görev çalıştırıcısıdır (Task Runner) ve her geçen gün büyüyen büyük bir ekosistem. Yüzlerce Grunt eklentisiyle çok az çaba harcayarak işlerinizi otomatikleştirebilirsiniz. Eksikliğini hissettiğiniz görevler için de eklentiler yayımlayabilirsiniz.

Eklentiler, Grunt’ı Grunt yapan en önemli faktördür. Yazının devamında eklentileri detaylı olarak inceleyeceğiz.

Kurulum

Grunt, Node.js bağımlı bir uygulama olduğu için önce Node.js kurmalıyız. nodejs.org‘tan uygulamayı indirerek ya da homebrew gibi araçlar kullanıyorsanız komut satırından yükleyebilirsiniz (Örn: brew install node).

Node.js kurulduktan sonra Terminal’den aşağıdaki komutu çalıştırıp Grunt’ı kuruyoruz. (Yetki durumuna göre kodun başına “sudo” komutu eklemeniz gerekebilir.)

npm install -g grunt-cli

Bu komutla Grunt, sisteminize kurulmuş oldu. Grunt’ın aktif hale gelebilmesi için eklenmesi gereken birkaç dosya daha var. Terminal’den Grunt kullanacağınız klasöre geçip;

npm init

komutu çalıştırılır ve uygulamanın sorduğu sorulara yanıt verilir (Proje ismi, versiyon numarası, lisans tipi vs). Bunun sonucunda projeye “package.json” dosyası eklenmiş olur.

Daha sonra aşağıdaki komut ile grunt projeye tanımlanır.

npm install grunt --save-dev

Oluşturulması gereken son dosyamız, gruntfile.js. Projenin hemen altına eklenir. Aşağıda standart bir gruntfile.js içeriği bulunuyor.

module.exports = function (grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json')
    });

    grunt.registerTask('default', []);
};
  • grunt.file.readJSON(‘package.json’) : Oluşturmuş olduğumuz package.json dosyasını okumak içindir.
  • grunt.registerTask(‘default’, []) : Komut satırından grunt komutuyla çalıştırılacak eklentileri kayıt eder.
  • Komut satırından grunt myTask diyerek bir görev çalıştırmak isterseniz grunt.registerTask(‘myTask’, []) ile görev tanımlayabiliriz.
  • registerTask methodunun 2. parametresi olan Array’e eklenti isimleri “string” olarak tanımlanır, birden fazla eklenti adı virgül ile ayrılır.

Grunt’ı tamamen aktif duruma getirmek için bir görev tanımlamak gerekiyor. Bunun için bir sonraki konuya geçiyoruz.

## Eklentiler / Plug-In’ler

Girişte bahsettiğim gibi eklentiler Grunt’ta çok önemli, hemen hemen herşeyi eklentiler ile yapacağız. Eklentiler aracılığıyla bir görev/task eklemeyi görelim.

Örnek olarak stylus eklentisini kuralım. Eklentilerin sayfalarında yüklemenin ve ayarlamaların nasıl yapılacağı ayrıntılı olarak bulunmaktadır, inceleyebilirsiniz.

npm install grunt-contrib-stylus --save-dev

Yukarı da ki komut çalıştırıldıktan sonra stylus eklentisi kurulmuş ve package.json‘a stylus bilgileri otomatik olarak eklenmiş oluyor. Bu işlemin ardından gruntfile.js‘i açıp aşağıdaki şekilde değiştiriyoruz.

module.exports = function (grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        stylus: {
            compile: {
                files: {
                    'build/css/common.css' : 'app/css/*.styl'
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-stylus');

    grunt.registerTask('default', ['stylus']);
};
  • Önce stylus ayarlarını tanımladık.
  • Ardından grunt.loadNpmTasks(‘grunt-contrib-stylus’); satırı ile stylus görevinin yüklenmesini sağladık.
  • Son olarak registerTask methoduna stylus’u tanımladık.

Komut satırından grunt komutunu çalıştırdığımızda projedeki “app/css/” klasörü altında ki tüm stylus dosyaları “build/css/” klasörü altına “common.css” adıyla çevrilmiş ve tek dosya olarak eklenmiş olacak.

Grunt Plugins sayfasından en çok indirilen uygulamaları görebilir ve istediğiniz uygulamaları arayabilirsiniz.

Sonuç

Görüldüğü üzere Grunt, geliştiriciler için olmazsa olmazlardan. Burada tüm özelliklerinden ve tüm eklentilerinden bahsedemedik ama benim gibi üşengeçseniz Grunt kesinlikle size göre.