モード サブモジュールのアンダースコア ミックスインをその親モジュールと共有したいと考えています。これが私のセットアップです:
.
├── index.js
└── node_modules
└── submodule
├── index.js
├── node_modules
│ └── underscore
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── underscore-min.js
│ └── underscore.js
└── package.json
./index.js:
var submodule = require('submodule')
, _ = require('underscore');
console.log('In main module : %s', _.capitalize('hello'));
./node_modules/submodule/index.js:
var _ = require('underscore');
_.mixin({
capitalize : function(string) {
return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();
}
});
console.log('In submodule : %s', _.capitalize('hello'));
実行するnode index.js
と、次の出力が得られます。
In submodule : Hello
/Users/lxe/devel/underscore-test/index.js:4
console.log('In main module : %s', _.capitalize('hello'));
^
TypeError: Object function (obj) {
if (obj instanceof _) return obj;
if (!(this instanceof _)) return new _(obj);
this._wrapped = obj;
} has no method 'capitalize'
ご覧のとおり、サブモジュール ( In submodule : Hello
) に mixin が登録されました。ただし、_.capitalize
メインモジュールでは未定義です。
モジュールでミックスインを共有するにはどうすればよいですか?