web-dev-qa-db-ja.com

1つのnpmパッケージをインストールすると、node_modulesに多くのサブフォルダーが追加されるのはなぜですか?

グラントプロジェクトで使用するnode/npmを更新しました。

しかし、プロジェクトにパッケージを追加したい場合、myproject/npm install grunt-faviconなど)はmyproject/node_modules/に数百のフォルダを追加するように見えますが、1つを追加するためにのみ使用されていました。 node_modules/grunt-faviconなど。

これらのことについての私の知識は基本的なものですが、これらは必須の依存関係であるようであり、これらの項目の一部でさえ、さらに多くの依存関係があります。

これらの依存関係を他の場所に追加するべきではありませんか?もしそうなら、これをどのように修正するのですか?

npm 3.3.5node 4.1.1grunt-cli v0.1.13grunt v0.4.5を使用しています。

このスクリーンショットでは、左側に~/.npm、右側に~/myproject/node_modulesが表示されています。

~/.npm on the left then

25
v3nt

これは正しいです、心配しないでください。パッケージをローカルにインストールしていますが、ディレクトリ構造が少し異なっています。これは、npm v3.0.0でが変更された動作です:すべての依存関係の依存関係がnode_modulesフォルダーに直接インストールされます(限り)これはバージョンの競合を引き起こさないため)。これにより、ファイルツリーのサイズが大幅に縮小されます。

npm 3.0.0リリースノート から:

フラット、フラット、フラット!

これで、依存関係は最大限にフラットにインストールされます。可能な限り、すべての依存関係とその依存関係、およびそれらの依存関係は、ネストせずにプロジェクトのnode_modulesフォルダーにインストールされます。 2つ(またはそれ以上)のモジュールが競合する依存関係を持っている場合にのみ、モジュールが相互にネストされて表示されます。

29
mik01aj