Grunt siistimmäksi

Kun AngularJs/Yeoman projekteissa puuhailee aikansa, Grunt tiedostosta voi tulla aikamoinen. Itse näen punaista kun näen satoja rivejä pitkän projektille keskeisen tiedoston jossa on kaiken lisäksi vielä useita sisäkkäisiä lohko ja taulukkorakenteita. Se tulee ampumaan jalkaan ylläpito ja bugimielessä hyvinkin pian.

Satuin törmäämään mukavaan artikkeliin koskien Gruntin siistimistä. Ideana on purkaa Taskit omaan /tasks alikansioon ja ladata ne sieltä automaattisesti. Vielä mukavampaa on purkaa kaikkien taskien optiot tasks/options alikansioon. Tässä esim. clean optiot (tasks/options/clean.js):

module.exports = {
  publish: {
    src: ['./publish/**']
  }
};

Jep, nämä toistavat isäntädokumentin module.exports rakennetta. Itse plug-inin nimeä ei tässä ole, se ratkeaa suoraan tiedoston nimen perusteella, eli tässä on siis clean plug-inin optioita säädetty.

Tässä esimerkki task:sta nimeltä server (tasks/server.js):

module.exports = function (grunt) {
 grunt.registerTask('server', [
 'express',
 'open',
 'watch'
 ]);
};

Ja tässä lopullinen gruntfile.js päähakemistosta:

module.exports = function(grunt) {
 
  // Load Grunt options automatically from tasks/options folder
  function loadConfig(path) {
    var glob = require('glob');
    var object = {};
    var key;
    glob.sync('*', {cwd: path}).forEach(function(option) {
      key = option.replace(/\.js$/,'');
      object[key] = require(path + option);
    });
    return object;
  }

  var config = { 
    pkg: grunt.file.readJSON('package.json'),
    env: process.env
  };

  grunt.util._.extend(config, loadConfig('./tasks/options/'));
  grunt.initConfig(config);
  
  // Load Grunt tasks automatically from tasks folder 
  require('load-grunt-tasks')(grunt);
  
  grunt.loadTasks("tasks");
};

Alkuperäinen Grunt oli tässä vaiheessa jo 304 riviä pitkä, ja kasvamaan päin, ja sisäkkäisten lohkojen määrä…. ai jai jai!

Samalla on tosiaan hyvä pistää Grunt lataamaan taskit automaattisesti sensijaan että ne ladataan manuaalisesti. Huomaa tuossa yllä load-grunt-tasks moduuli, joka hoitaa homman, kunhan taskin alussa on: ’grunt-’.

Eli ristiretkellä kohden parempaa tuottavuutta ja koodin hallintaa, jälleen lisää niksejä. Kunnia tästä ei mene itselle, itse vain testatin ja toimivaksi havaitsin. Alkuperäinen artikkeli tässä:

http://www.thomasboyt.com/2013/09/01/maintainable-grunt.html

 

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s