2017-04-14 23 views
0

こんにちは、私はNode、特に依存関係管理システムを使い慣れていません。モジュールをインストールするとき、私が書いた実際のコードがそれほど長くないときは、自分のコードベースがたくさんの依存関係によって覆われていることがわかります。また、モジュールを表す1つのフォルダの下にすべての依存関係をパッケージ化する代わりにnpmをインストールするときに、モジュールの依存関係が並列に並んでメインフォルダを汚染することがあることがあります。たとえば、3つのサブモジュールがあり、すべてがメインモジュールで使用され、よく適合するようなモジュールを作成しました。私はAWSの依存関係をインストールしたときにモジュールの数がかなり跳んだ私のコードベースを汚染するnode_modules

index.js 
node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 

はそのように私のコードベースは

index.js 
node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 
    aws_module_1 
    aws_module_2 
    . 
    . 
    . 
    . 
    . 
    aws_module_20 

のように見える問題

これは私のコードを乱雑にし、それは次のようになりつつありますそれよりもずっと多くのことが起こっています。ノードプロジェクトを効率的に管理する方法はありますか?

セカンダリ質問

は、どのように単一のフォルダにモジュールの依存関係のすべてを制限しない「NPM --saveいくつかのモジュールをインストールする」を実行来ますか?あるいは、あるパッケージに50個のパッケージが必要な場合、それらを必要とするパッケージと並行して50個のパッケージが並んでしまうことはありません。

たとえば、代わりに:

node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 
    aws_module_1 
    aws_module_2 
    . 
    . 
    . 
    . 
    . 
    aws_module_20 

それは

node_modules 
    my_authentication_module 
    my_authorization_module 
    my_persistance_module 
    aws 
     node_modules 
      aws_module_1 
      aws_module_2 
      . 
      . 
      . 
      . 
      . 
      aws_module_20 

だから、少なくとも、あなたが簡単にだけは本当にきれいに詰め込まAWSの依存関係の束と関心の3つのモジュールをtheresのを見ることができるトップレベルに移動取得するとよいでしょう1つのフォルダに保存します。このようなことは可能ですか?

+1

何を求めているのは行儀バージョン2.xを通って上NPM方法です。不要なネストはさまざまな問題を引き起こしたので、バージョン3.0.0でアルゴリズムを変更しました。私は動作が設定可能だとは思わない。 – mscdex

+0

'node_modules'が"コードベースを汚染する "か、コードを"乱雑にする "ことが、私は理解できません。彼らはちょうどそこに座って、誰にも害を与えません。そして、あなたは基本的にそれらについて心配する必要はありません。依存関係の構造を見たい場合は 'npm ls'を試してみてください。これについては[こちら](https://github.com/npm/npm/issues/9809)で詳しく読むことができます。 –

+0

@torazaburoもしこれがnode/npmの領域で普通なら、私は気にしません。しかし、それは心配する必要はありませんまたはそれらを見て真実ではありません。 MavenやGradleを使用していて、基になるすべてのJARがlibディレクトリに入れ替えるのではなく、そのクラスを私のソースコードに入れたら、自分のコードがどのように見えるか想像することができます....これが正常であれば、私はちょうど適応しますが、NPMかpackage.jsonを誤って誤って使用しているのではないことを確認したいと思います。 –

答えて

0

node_modulesの目的を誤解しているようです。排他的にnpm(またはyarnなど)の省です。独自のコードは決して含まれません(おそらく、依存関係として持ち込まれるあなたの別のパッケージを除いて)。それは(通常)バージョン管理されていません。つまり、.gitignored 'dです。どの時点でも、単純にnpm installを使用して完全に消去し、再投入することができます。もちろん、何かと同様に、ここにはニュアンスと発散的な意見があり、それについてはウェブ全体で詳しく説明しています。

独自のコードと成果物を管理して構造化する方法はたくさんあります。多くの場合、プロジェクトの先頭にあるsrcまたはlibディレクトリの下に、node_modulesと平行になります。 srcの中には、機能別にコードをグループ化する方が好きな人もいますが、他の人は問題のあるエリアをグループ化することを好む人もいます。これはプロジェクトオーナーが決定する問題です。 node_modules以来、いずれの場合においても

は、それが [email protected]と同様に、ケースが [email protected]であったように、階層的に依存関係を整理し、またはフラット形で npmかどうかは実際の結果であり、基本的にあなたの直接の問題ではありません。はい、 node_modules 100を持つエントリまたは500を見て少し当惑することができ、それは心配する必要は本当に npmための問題だ、と [email protected]で行われた変更のために良い理由があります。

関連する問題