.P [E] ``` .P Since foo depends directly on \fBbar@1\.2\.3\fP and \fBbaz@1\.2\.3\fP, those are installed in foo's \fBnode_modules\fP folder\. .P Even though the latest copy of blerg is 1\.3\.7, foo has a specific dependency on version 1\.2\.5\. So, that gets installed at [A]\. Since the parent installation of blerg satisfies bar's dependency on \fBblerg@1\.x\fP, it does not install another copy under [B]\. .P Bar [B] also has dependencies on baz and asdf, so those are installed in bar's \fBnode_modules\fP folder\. Because it depends on \fBbaz@2\.x\fP, it cannot re\-use the \fBbaz@1\.2\.3\fP installed in the parent \fBnode_modules\fP folder [D], and must install its own copy [C]\. .P Underneath bar, the \fBbaz \-> quux \-> bar\fP dependency creates a cycle\. However, because bar is already in quux's ancestry [B], it does not unpack another copy of bar into that folder\. .P Underneath \fBfoo \-> baz\fP [D], quux's [E] folder tree is empty, because its dependency on bar is satisfied by the parent folder copy installed at [B]\. .P For a graphical breakdown of what is installed where, use \fBnpm ls\fP\|\. .SS Publishing .P Upon publishing, npm will look in the \fBnode_modules\fP folder\. If any of the items there are not in the \fBbundledDependencies\fP array, then they will not be included in the package tarball\. .P This allows a package maintainer to install all of their dependencies (and dev dependencies) locally, but only re\-publish those items that cannot be found elsewhere\. See npm help \fBpackage\.json\fP for more information\. .SS See also .RS 0 .IP \(bu 2 npm help package\.json .IP \(bu 2 npm help install .IP \(bu 2 npm help pack .IP \(bu 2 npm help cache .IP \(bu 2 npm help config .IP \(bu 2 npm help npmrc .IP \(bu 2 npm help config .IP \(bu 2 npm help publish .RE