Kengo's blog

Technical articles about original projects, JVM, Static Analysis and JavaScript.

Drawing graph about dependency between AMD modules

Sometimes I want to know dependency between AMD modules graphically, because it might be helpful to understand complexity. Today I have tried to realize it.

I used blockdiag to draw graph about dependency.


We can realize it very easy if each module has ID. I think we do not have to care about 'this' problem for AMD loading. The result is here.


If some module has no ID, we have to touch to the implementation of AMD loader because API of AMD does not provide enough API. Today I used RequireJS 2.1.
AMDのAPIだけではどうにもならないので、AMDローダの実装に依存した方法を採る必要が出てきます。今回はRequireJS 2.1を前提に実装を進めます。

RequireJS has a magic module to get information of module, so I used it to get URL of module. Test is not enough, but I guess it works.
RequireJSにはmoduleというmagic moduleが用意されているので、これを使ってやるだけです。モジュールを一意に特定する要素としてはURIを採用しました。テストはまだ足りないですが、ちょっと試した限りでは動いてそうです。

This script does not support require method and require magic module, but it is enough for me.
以上です。requireメソッドやrequire magic moduleには対応していませんが、個人的に困らないのでOKとしています。