nodejs applicationfoobar-base
があり、別のアプリケーション ( foobar-baz
) を作成したとします。これは、次の「モジュール」にすることを意図していますfoobar-base
。
$ cd foobar-base
$ npm install foobar-baz
foobar-baz
で定義したクラスにメソッドが依存している場合、それは悪い習慣foobar-base
ですか?
あれは:
foobar-base/node_modules/foobar-baz/index.js
var myClass = require('../../src/myClass.js');
myClass.myMethod();
それを行うことは可能ですが、次の方法でモジュールをテストしている場合npm link
:
$ cd foobar-baz
$ npm link
$ cd ../foobar-base
$ npm link foobar-baz
その後、少なくとも私のマシンでは を指しているため、require
呼び出しは失敗します。しかし、理論的には、npm に公開すると、require は機能します。../../
/usr/lib/node_modules/
したがって、この種の予期しない (まだ理解可能な) 動作は、この一連の行動に従うことを検討しないように十分な危険信号を投げかけています。
代わりに、「グローバル化」しましたmyClass
:
foobar-base/node_modules/foobar-baz/index.js
myClass.myMethod(); // already available, see below
foobar-base/index.js
myClass = require('./src/myClass');
var foobar-baz = require('foobar-baz'); // myClass.myMethod() is called
...しかし、「グローバルは悪い」...では、どうすればよいでしょうか?