I wonder how much of that is simply npm duplicating libraries (at slighly different versions) due to its no-shared-dependencies approach?<p><a href="https:&#x2F;&#x2F;github.com&#x2F;Automattic&#x2F;wp-calypso&#x2F;blob&#x2F;master&#x2F;package.json" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Automattic&#x2F;wp-calypso&#x2F;blob&#x2F;master&#x2F;package...</a> uses ~130 libs.
After npm install (incl. dev deps), node_modules&#x2F; weighs 170M file size (and whopping 550M(!) disk size).
Let&#x27;s check duplication.  Dirs:
(Assuming equal size &amp; name indicate equal content)<p><pre><code>    $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | wc -l
    6259
    ~&#x2F;wp-calypso (master) $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | uniq | wc -l
    3286
    ~&#x2F;wp-calypso (master) $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | uniq --skip-fields=1 | wc -l
    2799
    $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | uniq --skip-fields=1 --count | numaverage 
    2.23615576991783
</code></pre>
Bytes:<p><pre><code>    $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | tr -d , | numsum | numfmt --grouping
    170,022,500
    ~&#x2F;wp-calypso (master) $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | uniq | tr -d , | numsum
    117,107,993
    ~&#x2F;wp-calypso (master) $ sed &#x27;s@\S*node_modules&#x2F;@@&#x27; DU | sort -k2,2 -k1,1 | uniq --skip-fields=1 | tr -d , | numsum | numfmt --grouping
    91,895,673
</code></pre>
=&gt; dirs appear in ~2.2 places on average; ~31% of total size is wasted on exact dups, ~14% more spent on different versions on same lib.<p><pre><code>    $ npm dedupe
    ...
    $ $ du --summarize --apparent-size node_modules&#x2F;
    166,097,508	node_modules&#x2F;
</code></pre>
Underwhelming!  Only 2%?!  dedupe is constrained by npm lookup algorithm (can only lift equal versions to parent dir) but 2% is useless.  Should have used sym&#x2F;hard&#x2F;reflinks.<p>Anyway, I now know npm&#x27;s exact-duplication overhead is not huge (though could be linked);
inexact-duplication is small enough to be easily worth the ability to mix versions;
and that the new control panel is indeed bloated [however I assume it has more functionality than old?].