GruntでGraphVizの画像生成を自動化する


GruntはJavaScriptCSSのminifyや結合、テストなどだけではなく、CoffeeScript/LESSのコンパイルなどにも使えます。今回はGraphVizのdotファイルから画像ファイルを生成してみました。
使ったのはgrunt-graphviz

本当は、ソースコードからdotファイルも生成したいんですが、こちらはまだ調べられていません。これができれば楽なんですが。

何はともあれインストール。

$ npm install grunt-graphviz --save-dev

まず必要なのは、モジュールをロードする事。

grunt.loadNpmTasks('grunt-graphviz');

次にタスクを設定します。

	graphviz: {
		target1: {
			files: {
				'dest/target1.png': 'source/target1.dot',
			}
		},
		target2: {
			files: {
				'dest/target2.png': 'source/target2.dot',
			}
		}
	},

最後にgrunt watchコマンドで監視する設定を追加します。生成処理はそれなりに重いので、監視対象と実行するタスクを小さく分けてます。

    watch: {
		graphviz_target1: {
			files: ['source/target1.dot'],
			tasks: ['graphviz:target1']
		},
		graphviz_target2: {
			files: ['source/target2.dot'],
			tasks: ['graphviz:target2']
		}
    }

あとはgrunt watchコマンドで監視すればOK。直接実行したければ、以下のようにタスクごとに実行すればOKです。

$ grunt graphviz
Running "graphviz:graphviz_target1" (graphviz) task
Compiling source/target1.dot -> dest/target1.png

Running "graphviz:graphviz_target2" (graphviz) task
Compiling source/target2.dot -> dest/target2.png

Done, without errors.

$ grunt graphviz:target2
Running "graphviz:graphviz_target2" (graphviz) task
Compiling source/target2.dot -> dest/target2.png

Done, without errors.