2011-12-19 5 views
1

別のモジュールへの依存関係として既にインストールされているnpmモジュールを必要とする場合は、それでもnpmでインストールする必要がありますか?node.jsの依存関係が重複しています

たとえば、kueには赤が必要です。赤はkueでインストールされます。 NPMインストールKUE

/node_modules/kue/node_modules/redis 

が、私はまだこれNPMのRedis

/node_modules/redis/ 

をインストールし、同様のRedisをインストールする必要がありますか私はKUEからインストールのRedisへの参照を追加することができる方法がある私の文を要求

require("/node_modules/kue/node_modules/redis") 

代わりの

require ("redis") 

か、より良い方法がありますか?

答えて

0

は、親指の一般的なルールです:

、あなたのアプリケーションのソースコードでrequire('module-name')、あなたが依存関係としてmodule-nameリストする必要があります。依存関係の依存関係を不透明な実装の詳細として扱い、自分自身には関係しません。

これにより、kueはアプリケーションとは異なる別のRedisモジュールのバージョンに依存したり、別のモジュールの実装を完全に切り替えることができます。すべてあなたのアプリケーションに影響を与えません。

ノードのモジュールシステムは、同じモジュールの複数のバージョンを同じプロセスで競合することなくロードできるという点で、従来のもの(「Ruby」)とは異なります。これは最初はちょっと気分が落ちましたが、ちょうどそれと一緒に行くと、すぐに利益が見えます。私は、コミュニティがNodeのこの側面をさらに探求するにつれて、それを利用するためのいくつかの興味深いプロジェクトが発生することを私は見ています。

0

ローカルにredisをインストールするだけです。

kueにインストールされているものとは別のバージョンのredisが必要な場合はどうなりますか? kueのバージョンを更新したときにredisのバージョンが突然変更されたらどうなりますか?

require(module)が期待通りに機能する限り、node_modulesの内容は実際には気にしないでください。数kbsのソースコードを保存することは、この努力の価値がありません。ここで

0

あなたはモジュールと依存関係を自分でインストールすることに気を付ける必要はありません。NPMはそれを行います。

Kue(またはRedisに依存する他のモジュール)が特定のバージョンを必要とする可能性があり、他のモジュールが別のバージョンを必要とする可能性があるので、Redisのインストールを1つだけ行うことは素晴らしいことではありません。

NPMあなたのためにすべての仕事をしましょう。ちょうどnpm install package、次にrequire('package')です。 @ Raynosは言ったように、数kbsのコードを節約することはそれほど大きな問題ではなく、問題に陥ることもあります。

関連する問題