Update: As Erik Pukinskis mentioned in the comments:
As of npm 3.5, support for
--legacy-bundling has been dropped.
Yes, there is a way to have nested directories again by changing npm’s (version 3 as of this writing) default behaviour:
Delete the currently present
Tell npm to install with legacy bundling for this one install:
npm install --legacy-bundling
A “permanent” alternative:
Set your npm config to always use legacy bundling…
npm set legacy-bundling=true
.. and run as usual:
Note: fetching dependencies with legacy bundling will take a lot more time because many several different versions of the same dependencies will be installed.
Disclaimer: As a non-Windows user I have no need for flat dependencies and want to find self-declared dependencies with ease in favour of automatic deduping. Since installing npm dependencies without legacy bundling already takes an incredible amount of time I’m usually willing to spend those extra minutes install time. It gets back down to 5 directories from previously 700+ (…) in a Laravel Elixir setup with bootstrap (non-sass), font-awesome and jquery added.