質問: ### 前提・実現したいこと 長らく放置していた node.js と npm のアップデートを先日行いました。 現在のバージョン node : v7.2.1 npm : v4.0.5 それ以降 npm install を実行したときにローカル package.json の devDependenceis に記述してある内容より、さらに多くのモジュールが node_modules に保存されるようになってしまいました。 これはモジュールの依存関係に起因するもので仕方のないことなのでしょうか? ### 発生している問題 ansi-colors、ansi-gray... といった記述外のモジュールが 約270近くインストールされてしまう ### 該当のソースコード ・package.json ``` { "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Erro: no test specified\" && exit 1" }, "author": "", "license": "MIT", "devDependencies": { "gulp": "^4.0.0", } } ```
回答: はい、npm 3以降、`node_modules`の標準での構造が変わっています。「`a`のモジュールが`b`に依存して、さらに`b`が`c`に依存する」というような場合、 * npm < 3 ... `a/node_modules/b/node_modules/c`のように、依存モジュールは下層に入っていきました。 * npm >= 3 ... 複数バージョンを入れる必要がある場合を除いて、`a`も`b`も`c`もフラットにインストールされます。 > > これはモジュールの依存関係に起因するもので仕方のないことなのでしょうか? > > > むしろ、旧来の構造だとディレクトリが深くなりすぎてパス名の長さの制限に衝突するというトラブルが多発していたので、今の構造のほうがむしろありがたい、と感じています。