nodejsでモジュールの逆引き
先日アダプター型のnodejsモジュールを公開したのですが、こういう形のモジュールはadapter – adaptee間のバージョンチェック方法が確立されていません。
JavaのOSGi等では普通に出来る事ですが、nodejsの場合、バージョンチェックが出来る依存関係というのは、全て包含になってしまいます。
var moduleA = require('moduleA');
var moduleB = require('moduleB');
moduleA.attach(moduleB);
と言う協働関係が約束として出来る事になっている moduleAとmoduleBにおいて、動作可能なバージョンのチェックは基本的に出来ません。1
そこで、任意のモジュールから package.json の情報を引っ張ってこれるモジュールを作ってみました。
もちろんrequire()
された全てのモジュールがpackage.jsonを持っているわけでは無いので、存在するときだけ持ってくる、と言う仕組みです。
npm install --save moduleinfo
でインストールし、以下のようにして使用出来ます。
var moduleA = require('moduleA');
var moduleA_info = require('moduleinfo')(moduleA);
var version_moduleA = moduleA_info.packagejson.version;
moduleinfoには、’moduleA’のjsソースのパスも含まれます。
詳しくは、moduleinfo on github をご覧下さい。
-
本当に協働関係の約束が出来ているのであれば、いずれかのモジュールが verion() というメソッドを持つという決まりを作れば良いだけなんですが、私が作ったアダプターは先方の作者のあずかり知らないところで作ったものですから、そんな約束は作れません。
あとからアダプターを作る場合は大体そう言う事になると思います。 ↩