• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html><html><head>
2<meta charset="utf-8">
3<title>npm-ls</title>
4<style>
5body {
6    background-color: #ffffff;
7    color: #24292e;
8
9    margin: 0;
10
11    line-height: 1.5;
12
13    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
14}
15#rainbar {
16    height: 10px;
17    background-image: linear-gradient(139deg, #fb8817, #ff4b01, #c12127, #e02aff);
18}
19
20a {
21    text-decoration: none;
22    color: #0366d6;
23}
24a:hover {
25    text-decoration: underline;
26}
27
28pre {
29    margin: 1em 0px;
30    padding: 1em;
31    border: solid 1px #e1e4e8;
32    border-radius: 6px;
33
34    display: block;
35    overflow: auto;
36
37    white-space: pre;
38
39    background-color: #f6f8fa;
40    color: #393a34;
41}
42code {
43    font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace;
44    font-size: 85%;
45    padding: 0.2em 0.4em;
46    background-color: #f6f8fa;
47    color: #393a34;
48}
49pre > code {
50    padding: 0;
51    background-color: inherit;
52    color: inherit;
53}
54h1, h2, h3 {
55    font-weight: 600;
56}
57
58#logobar {
59    background-color: #333333;
60    margin: 0 auto;
61    padding: 1em 4em;
62}
63#logobar .logo {
64    float: left;
65}
66#logobar .title {
67    font-weight: 600;
68    color: #dddddd;
69    float: left;
70    margin: 5px 0 0 1em;
71}
72#logobar:after {
73    content: "";
74    display: block;
75    clear: both;
76}
77
78#content {
79    margin: 0 auto;
80    padding: 0 4em;
81}
82
83#table_of_contents > h2 {
84    font-size: 1.17em;
85}
86#table_of_contents ul:first-child {
87    border: solid 1px #e1e4e8;
88    border-radius: 6px;
89    padding: 1em;
90    background-color: #f6f8fa;
91    color: #393a34;
92}
93#table_of_contents ul {
94    list-style-type: none;
95    padding-left: 1.5em;
96}
97#table_of_contents li {
98    font-size: 0.9em;
99}
100#table_of_contents li a {
101    color: #000000;
102}
103
104header.title {
105    border-bottom: solid 1px #e1e4e8;
106}
107header.title > h1 {
108    margin-bottom: 0.25em;
109}
110header.title > .description {
111    display: block;
112    margin-bottom: 0.5em;
113    line-height: 1;
114}
115
116footer#edit {
117    border-top: solid 1px #e1e4e8;
118    margin: 3em 0 4em 0;
119    padding-top: 2em;
120}
121</style>
122</head>
123<body>
124<div id="banner">
125<div id="rainbar"></div>
126<div id="logobar">
127<svg class="logo" role="img" height="32" width="32" viewBox="0 0 700 700">
128<polygon fill="#cb0000" points="0,700 700,700 700,0 0,0"></polygon>
129<polygon fill="#ffffff" points="150,550 350,550 350,250 450,250 450,550 550,550 550,150 150,150"></polygon>
130</svg>
131<div class="title">
132npm command-line interface
133</div>
134</div>
135</div>
136
137<section id="content">
138<header class="title">
139<h1 id="npm-ls">npm-ls</h1>
140<span class="description">List installed packages</span>
141</header>
142
143<section id="table_of_contents">
144<h2 id="table-of-contents">Table of contents</h2>
145<div id="_table_of_contents"><ul><li><a href="#synopsis">Synopsis</a></li><li><a href="#description">Description</a></li><li><a href="#note-design-changes-pending">Note: Design Changes Pending</a></li><li><a href="#configuration">Configuration</a></li><ul><li><a href="#all"><code>all</code></a></li><li><a href="#json"><code>json</code></a></li><li><a href="#long"><code>long</code></a></li><li><a href="#parseable"><code>parseable</code></a></li><li><a href="#global"><code>global</code></a></li><li><a href="#depth"><code>depth</code></a></li><li><a href="#omit"><code>omit</code></a></li><li><a href="#include"><code>include</code></a></li><li><a href="#link"><code>link</code></a></li><li><a href="#package-lock-only"><code>package-lock-only</code></a></li><li><a href="#unicode"><code>unicode</code></a></li><li><a href="#workspace"><code>workspace</code></a></li><li><a href="#workspaces"><code>workspaces</code></a></li><li><a href="#include-workspace-root"><code>include-workspace-root</code></a></li><li><a href="#install-links"><code>install-links</code></a></li></ul><li><a href="#see-also">See Also</a></li></ul></div>
146</section>
147
148<div id="_content"><h3 id="synopsis">Synopsis</h3>
149<pre><code class="language-bash">npm ls &lt;package-spec&gt;
150
151alias: list
152</code></pre>
153<h3 id="description">Description</h3>
154<p>This command will print to stdout all the versions of packages that are
155installed, as well as their dependencies when <code>--all</code> is specified, in a
156tree structure.</p>
157<p>Note: to get a "bottoms up" view of why a given package is included in the
158tree at all, use <a href="../commands/npm-explain.html"><code>npm explain</code></a>.</p>
159<p>Positional arguments are <code>name@version-range</code> identifiers, which will limit
160the results to only the paths to the packages named.  Note that nested
161packages will <em>also</em> show the paths to the specified packages.  For
162example, running <code>npm ls promzard</code> in npm's source tree will show:</p>
163<pre><code class="language-bash">npm@10.5.0 /path/to/npm
164└─┬ init-package-json@0.0.4
165  └── promzard@0.1.5
166</code></pre>
167<p>It will print out extraneous, missing, and invalid packages.</p>
168<p>If a project specifies git urls for dependencies these are shown
169in parentheses after the <code>name@version</code> to make it easier for users to
170recognize potential forks of a project.</p>
171<p>The tree shown is the logical dependency tree, based on package
172dependencies, not the physical layout of your <code>node_modules</code> folder.</p>
173<p>When run as <code>ll</code> or <code>la</code>, it shows extended information by default.</p>
174<h3 id="note-design-changes-pending">Note: Design Changes Pending</h3>
175<p>The <code>npm ls</code> command's output and behavior made a <em>ton</em> of sense when npm
176created a <code>node_modules</code> folder that naively nested every dependency.  In
177such a case, the logical dependency graph and physical tree of packages on
178disk would be roughly identical.</p>
179<p>With the advent of automatic install-time deduplication of dependencies in
180npm v3, the <code>ls</code> output was modified to display the logical dependency
181graph as a tree structure, since this was more useful to most users.
182However, without using <code>npm ls -l</code>, it became impossible to show <em>where</em> a
183package was actually installed much of the time!</p>
184<p>With the advent of automatic installation of <code>peerDependencies</code> in npm v7,
185this gets even more curious, as <code>peerDependencies</code> are logically
186"underneath" their dependents in the dependency graph, but are always
187physically at or above their location on disk.</p>
188<p>Also, in the years since npm got an <code>ls</code> command (in version 0.0.2!),
189dependency graphs have gotten much larger as a general rule.  Therefore, in
190order to avoid dumping an excessive amount of content to the terminal, <code>npm ls</code> now only shows the <em>top</em> level dependencies, unless <code>--all</code> is
191provided.</p>
192<p>A thorough re-examination of the use cases, intention, behavior, and output
193of this command, is currently underway.  Expect significant changes to at
194least the default human-readable <code>npm ls</code> output in npm v8.</p>
195<h3 id="configuration">Configuration</h3>
196<h4 id="all"><code>all</code></h4>
197<ul>
198<li>Default: false</li>
199<li>Type: Boolean</li>
200</ul>
201<p>When running <code>npm outdated</code> and <code>npm ls</code>, setting <code>--all</code> will show all
202outdated or installed packages, rather than only those directly depended
203upon by the current project.</p>
204<h4 id="json"><code>json</code></h4>
205<ul>
206<li>Default: false</li>
207<li>Type: Boolean</li>
208</ul>
209<p>Whether or not to output JSON data, rather than the normal output.</p>
210<ul>
211<li>In <code>npm pkg set</code> it enables parsing set values with JSON.parse() before
212saving them to your <code>package.json</code>.</li>
213</ul>
214<p>Not supported by all npm commands.</p>
215<h4 id="long"><code>long</code></h4>
216<ul>
217<li>Default: false</li>
218<li>Type: Boolean</li>
219</ul>
220<p>Show extended information in <code>ls</code>, <code>search</code>, and <code>help-search</code>.</p>
221<h4 id="parseable"><code>parseable</code></h4>
222<ul>
223<li>Default: false</li>
224<li>Type: Boolean</li>
225</ul>
226<p>Output parseable results from commands that write to standard output. For
227<code>npm search</code>, this will be tab-separated table format.</p>
228<h4 id="global"><code>global</code></h4>
229<ul>
230<li>Default: false</li>
231<li>Type: Boolean</li>
232</ul>
233<p>Operates in "global" mode, so that packages are installed into the <code>prefix</code>
234folder instead of the current working directory. See
235<a href="../configuring-npm/folders.html">folders</a> for more on the differences in behavior.</p>
236<ul>
237<li>packages are installed into the <code>{prefix}/lib/node_modules</code> folder, instead
238of the current working directory.</li>
239<li>bin files are linked to <code>{prefix}/bin</code></li>
240<li>man pages are linked to <code>{prefix}/share/man</code></li>
241</ul>
242<h4 id="depth"><code>depth</code></h4>
243<ul>
244<li>Default: <code>Infinity</code> if <code>--all</code> is set, otherwise <code>1</code></li>
245<li>Type: null or Number</li>
246</ul>
247<p>The depth to go when recursing packages for <code>npm ls</code>.</p>
248<p>If not set, <code>npm ls</code> will show only the immediate dependencies of the root
249project. If <code>--all</code> is set, then npm will show all dependencies by default.</p>
250<h4 id="omit"><code>omit</code></h4>
251<ul>
252<li>Default: 'dev' if the <code>NODE_ENV</code> environment variable is set to
253'production', otherwise empty.</li>
254<li>Type: "dev", "optional", or "peer" (can be set multiple times)</li>
255</ul>
256<p>Dependency types to omit from the installation tree on disk.</p>
257<p>Note that these dependencies <em>are</em> still resolved and added to the
258<code>package-lock.json</code> or <code>npm-shrinkwrap.json</code> file. They are just not
259physically installed on disk.</p>
260<p>If a package type appears in both the <code>--include</code> and <code>--omit</code> lists, then
261it will be included.</p>
262<p>If the resulting omit list includes <code>'dev'</code>, then the <code>NODE_ENV</code> environment
263variable will be set to <code>'production'</code> for all lifecycle scripts.</p>
264<h4 id="include"><code>include</code></h4>
265<ul>
266<li>Default:</li>
267<li>Type: "prod", "dev", "optional", or "peer" (can be set multiple times)</li>
268</ul>
269<p>Option that allows for defining which types of dependencies to install.</p>
270<p>This is the inverse of <code>--omit=&lt;type&gt;</code>.</p>
271<p>Dependency types specified in <code>--include</code> will not be omitted, regardless of
272the order in which omit/include are specified on the command-line.</p>
273<h4 id="link"><code>link</code></h4>
274<ul>
275<li>Default: false</li>
276<li>Type: Boolean</li>
277</ul>
278<p>Used with <code>npm ls</code>, limiting output to only those packages that are linked.</p>
279<h4 id="package-lock-only"><code>package-lock-only</code></h4>
280<ul>
281<li>Default: false</li>
282<li>Type: Boolean</li>
283</ul>
284<p>If set to true, the current operation will only use the <code>package-lock.json</code>,
285ignoring <code>node_modules</code>.</p>
286<p>For <code>update</code> this means only the <code>package-lock.json</code> will be updated,
287instead of checking <code>node_modules</code> and downloading dependencies.</p>
288<p>For <code>list</code> this means the output will be based on the tree described by the
289<code>package-lock.json</code>, rather than the contents of <code>node_modules</code>.</p>
290<h4 id="unicode"><code>unicode</code></h4>
291<ul>
292<li>Default: false on windows, true on mac/unix systems with a unicode locale,
293as defined by the <code>LC_ALL</code>, <code>LC_CTYPE</code>, or <code>LANG</code> environment variables.</li>
294<li>Type: Boolean</li>
295</ul>
296<p>When set to true, npm uses unicode characters in the tree output. When
297false, it uses ascii characters instead of unicode glyphs.</p>
298<h4 id="workspace"><code>workspace</code></h4>
299<ul>
300<li>Default:</li>
301<li>Type: String (can be set multiple times)</li>
302</ul>
303<p>Enable running a command in the context of the configured workspaces of the
304current project while filtering by running only the workspaces defined by
305this configuration option.</p>
306<p>Valid values for the <code>workspace</code> config are either:</p>
307<ul>
308<li>Workspace names</li>
309<li>Path to a workspace directory</li>
310<li>Path to a parent workspace directory (will result in selecting all
311workspaces within that folder)</li>
312</ul>
313<p>When set for the <code>npm init</code> command, this may be set to the folder of a
314workspace which does not yet exist, to create the folder and set it up as a
315brand new workspace within the project.</p>
316<p>This value is not exported to the environment for child processes.</p>
317<h4 id="workspaces"><code>workspaces</code></h4>
318<ul>
319<li>Default: null</li>
320<li>Type: null or Boolean</li>
321</ul>
322<p>Set to true to run the command in the context of <strong>all</strong> configured
323workspaces.</p>
324<p>Explicitly setting this to false will cause commands like <code>install</code> to
325ignore workspaces altogether. When not set explicitly:</p>
326<ul>
327<li>Commands that operate on the <code>node_modules</code> tree (install, update, etc.)
328will link workspaces into the <code>node_modules</code> folder. - Commands that do
329other things (test, exec, publish, etc.) will operate on the root project,
330<em>unless</em> one or more workspaces are specified in the <code>workspace</code> config.</li>
331</ul>
332<p>This value is not exported to the environment for child processes.</p>
333<h4 id="include-workspace-root"><code>include-workspace-root</code></h4>
334<ul>
335<li>Default: false</li>
336<li>Type: Boolean</li>
337</ul>
338<p>Include the workspace root when workspaces are enabled for a command.</p>
339<p>When false, specifying individual workspaces via the <code>workspace</code> config, or
340all workspaces via the <code>workspaces</code> flag, will cause npm to operate only on
341the specified workspaces, and not on the root project.</p>
342<p>This value is not exported to the environment for child processes.</p>
343<h4 id="install-links"><code>install-links</code></h4>
344<ul>
345<li>Default: false</li>
346<li>Type: Boolean</li>
347</ul>
348<p>When set file: protocol dependencies will be packed and installed as regular
349dependencies instead of creating a symlink. This option has no effect on
350workspaces.</p>
351<h3 id="see-also">See Also</h3>
352<ul>
353<li><a href="../using-npm/package-spec.html">package spec</a></li>
354<li><a href="../commands/npm-explain.html">npm explain</a></li>
355<li><a href="../commands/npm-config.html">npm config</a></li>
356<li><a href="../configuring-npm/npmrc.html">npmrc</a></li>
357<li><a href="../configuring-npm/folders.html">npm folders</a></li>
358<li><a href="../commands/npm-explain.html">npm explain</a></li>
359<li><a href="../commands/npm-install.html">npm install</a></li>
360<li><a href="../commands/npm-link.html">npm link</a></li>
361<li><a href="../commands/npm-prune.html">npm prune</a></li>
362<li><a href="../commands/npm-outdated.html">npm outdated</a></li>
363<li><a href="../commands/npm-update.html">npm update</a></li>
364</ul></div>
365
366<footer id="edit">
367<a href="https://github.com/npm/cli/edit/latest/docs/content/commands/npm-ls.md">
368<svg role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentcolor" style="vertical-align: text-bottom; margin-right: 0.3em;">
369<path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path>
370</svg>
371Edit this page on GitHub
372</a>
373</footer>
374</section>
375
376
377
378</body></html>