2012-08-31 12 views
6

node.jsアプリケーション内で内部モジュールを処理する方法としてはどのような方法がありますか?内部Node.JSモジュールを管理する方法

私は現在、かなり大きなアプリケーションを持っていて、いくつかの依存関係があり、npmでインストールされています。我々はnode_modules.gitignoreに持っています。したがって、リポジトリにはありません。 npm shrinkwrapを使用してモジュールのバージョンをフリーズするので、展開時にnpm installは、node_modulesに必要な情報をまとめます。

アウトアプリが大きくなっているので、小さなモジュールに分割したいと思っています。今度は、fooモジュールを作成してnode_moduesに入れると、そのモジュールをrepoで許可する必要があります。これは、無視してチェックアウトしたモジュールではありません。node_modulesです。

これらはnpmレジストリでは公開できません。

私が気付いていない明白な解決策はありますか?

+1

私の個人用のライブラリ/モジュールは、 'npm_modules'の代わりにプロジェクトの'/lib'ディレクトリに貼り付けます。この方法でGitにも組み込むことができます。 –

+0

ええ、libフォルダを持っていて、( '/ lib/myThing')が必要です。 –

+2

libフォルダでは、必要なときに明示的にモジュールの名前を付ける必要があります。私はそれらをたくさん必要とします:)あらゆる場所から。私は 'require(" ../../../../../lib/foo ")'が本当に好きではありません。それらをノードモジュールに入れると、アクセスがずっと簡単になります。 –

答えて

7

私は、サードパーティ製の非リポジトリと社内の改訂管理コンテンツを混在させないという美意識に同意します。

NODE_PATH検索パス変数を使用すると、リビジョン管理下にある別のディレクトリを使用することができます。

http://nodejs.org/api/modules.html

複雑対柔軟性のためのあなたの食欲に応じて、出力ディレクトリに、そのあなたがそれらを保存しているところから、実際にコピーしますさまざまなノードモジュールをビルドステップを検討することができます(おそらく「という名前node_modules」必ずしもそうとは限りません)。

+0

NODE_PATHはここで最もエレガントなアプローチです。私はちょうどlibに物事を保持することができます/と名前でそれらを参照する必要があります。環境変数が適切に文書化されているので、私はそれがハックまたは何かとみなされるとは思わない:)ありがとう。 –

5

一般的な解決策は、モジュールをどこかのプライベートGitリポジトリに格納してから、git://というURLを依存関係として使用することです。 npmはリポジトリを依存関係としてクローンする方法を知っています。

+0

ありがとう、私はこれを評価しましたが、私はどうにかプライベートgit reposにアクセスするために私たちのサーバーを認証する必要があります。サーバーの公開鍵またはIP範囲を使用します。それはうまくいくだろう。 –

関連する問題