Grunt の同名タスクをファイル分割する

| コメントをどうぞ

12月ですね。
12月と言えば、そう私たち会社人にとって避けては通れない忘年会のシーズンですね。
γ-GTPの上昇には気をつけて!

・・・くりすます?
なんですかそれは?

どうもDiceK Mikamiです。
デジャブ?

ここ最近はGruntを使ってグルグルしています。
(@д@)←こんな状態。
なので、Gruntに関して書いてみたいと思います。

 

概要

プロジェクトの規模が大きくなるとGruntfile.jsのサイズがどうしても大きくなってしまいます。
また、状況によっては同じタスクであっても処理を分けたい、ファイルを分割したいなんて思うこともあるかと思います。
今回は、同じタスクに登録する内容をファイル分割して登録する方法を紹介します。
 

環境

  • Node.js: 0.10.33
  • npm: 1.4.28
  • grunt-cli: 0.1.13
  • grunt: 0.4.5
  • grunt-contrib-copy: 0.7.0
  • load-grunt-tasks: 1.0.0
     

実験

今回はCopyタスクを分割してみたいと思います。

Gruntfile.js

'use strict';

module.exports = function (grunt) {
    // gruntプラグインの呼び出し
    require('load-grunt-tasks')(grunt);

    grunt.initConfig({
        // Copyタスクの外枠を作っておく
        copy: {}
    });

    // 引数で指定したフォルダ配下のファイルを読み込む
    grunt.loadTasks('grunt');

    grunt.registerTask('exec', ['copy:copy1', 'copy:copy2']);
};

grunt/copy1.js

'use strict';

module.exports = function(grunt) {
    // copy1として登録
    grunt.config.data.copy['copy1'] = {
        files: [{
            expand: true,
            src: 'コピー元',
            dest: 'コピー先'
        }]
    };
};

grunt/copy2.js

'use strict';

module.exports = function(grunt) {
    // copy2として登録
    grunt.config.data.copy['copy2'] = {
        files: [{
            expand: true,
            src: 'コピー元',
            dest: 'コピー先'
        }]
    };
};

 

解説

タスクのモジュールは、grunt.config.data配下に連想配列として保持されます。
その下にキー名をつけて処理内容を登録すれば、タスクとして利用することができます。
今回はCopyタスクを利用しましたが、その他のプラグインでも同様に行うことができると思います。
かなりあやしいBad Know-Howかもしれませんが、処理を分割したいと考えている場合には、良い解決の一つになるかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>