こと(ニュアンスがよくわからん。そのうち出るでしょう。node_modulesの依存がパッケージ間のバージョンが衝突しない限り、トップレベルのnode_modulesにフラットに展開される。これによって同一のモジュールを依存ツリー間でモジュールが重複した時にnode_modules以下のサイズが膨らむのを抑えることができる。衝突した場合はそのモジュールの子のnode_modulesに格納されて衝突は回避される。気になるrequireの仕様とはいえ、requireの仕様が変わってるわけじゃないので、トップレベルから子だけじゃなく孫モジュールも直接requireできてしまう。できなかったのができるようになる。これはある時点でrequireできたモジュールが何の依存だったのかあとでわからないという、将来的に禍根になる可能性があるケースがあるのではないか。壊れるケース気にしないといけないのが一点。子と孫で同じバージョンの場合はrequireキャッシュに引っかかって同一参照になる。依存自身からみた場合に子が孫をシングルトンだと想定してグローバルオプションをセットしている場合npm3にしたことで壊れる。markedが判りやすく壊れそうだったので、例に出す。gfmでないと存在しないが、参照が同一な為あとで読み込んだsetOptionsで有効になってしまう。意図しないとなかなか起こせないとは思うんだけど、ハマった時の根は深そう。他に気づいた点としてはbrowserifyが対応してなかったので、browserify使っている人も対応待ちになるはず。関係ってどうなるか話進んでるんだろうか。upLoginユーザーは見つかりませんでした。