gulp や grunt と似たようなソフトウェアである sigh というビルドシステムが話題になっていたので試してみました。

インストール

npm でインストールします。 babel を使ってトランスパイルするプラグイン sigh-babel と、 mocha を実行する gulp プラグイン gulp-mocha も一緒にインストールしておきます。

$ npm install -g sigh-cli
$ npm install -D sigh
$ npm install -D babel sigh-babel gulp-mocha

試してみる

テストコードを ES6 で書き、 mocha で実行してみます。まずはテストコードを用意します。

// a.js

import assert from 'assert';

var f = x => x * x;

describe('f', () => {
    it('returns square', () => {
        assert(f(3) === 9);
    });
});

これをビルドしてテストを実行する用に sigh の設定ファイル sigh.js を JavaScript で用意します。

// sigh.js

var babel;
var glob;
var mocha;
var pipeline;
var write;

module.exports = function(pipelines) {
    pipelines['build'] = [
        glob('a.js'),
        babel({ modules: 'common' }),
        write('out')
    ];

    pipelines['test'] = [
        pipeline('build'),
        mocha({ files: 'out/a.js' })
    ];
};

sigh で特徴的なのがプラグインの読み込み方です。プラグインは package.jsondependencies に書かれた sigh-*gulp-* を自動でグローバルに読み込まれます。上の例で最初に var で定義しているものがプラグインです。 globpipelinewritesigh 自身に組み込まれた関数です。

pipelines[...] に配列で処理を指定していくとそれが実行されます。

これを実行するコマンドが sigh です。

$ sigh

これでコンパイルとテストが実行されます。ビルドだけで良い場合は sigh build とします。

監視

-w オプションでファイルを監視して更新があった時、自動で実行してくれます。

$ sigh -w

開発中はこのコマンドを実行しておく感じですかね。

まとめ

  • sigh は JavaScript 製のビルドシステム
  • プラグインは package.json に書いておくと自動で読み込んでくれる
  • -w オプションでファイルを監視して実行