Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
npm-query.html434 linesDownload Raw Back to commands
1<!DOCTYPE html><html><head>
2<meta charset="utf-8">
3<title>npm-query</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
116header.title .version {
117    font-size: 0.8em;
118    color: #666666;
119}
120
121footer#edit {
122    border-top: solid 1px #e1e4e8;
123    margin: 3em 0 4em 0;
124    padding-top: 2em;
125}
126
127table {
128    width: 100%;
129    margin: 1em 0;
130    border-radius: 6px;
131    border: 1px solid #e1e4e8;
132    overflow: hidden;
133    border-collapse: separate;
134    border-spacing: 0;
135}
136
137table thead {
138    background-color: #f6f8fa;
139}
140
141table tbody {
142    background-color: #ffffff;
143}
144
145table th,
146table td {
147    padding: 0.75em;
148    text-align: left;
149    border-right: 1px solid #e1e4e8;
150    border-bottom: 1px solid #e1e4e8;
151}
152
153table th:last-child,
154table td:last-child {
155    border-right: none;
156}
157
158table tbody tr:last-child td {
159    border-bottom: none;
160}
161
162table th {
163    font-weight: 600;
164    background-color: #f6f8fa;
165}
166
167table code {
168    white-space: nowrap;
169}
170
171</style>
172</head>
173<body>
174<div id="banner">
175<div id="rainbar"></div>
176<div id="logobar">
177<svg class="logo" role="img" height="32" width="32" viewBox="0 0 700 700">
178<polygon fill="#cb0000" points="0,700 700,700 700,0 0,0"></polygon>
179<polygon fill="#ffffff" points="150,550 350,550 350,250 450,250 450,550 550,550 550,150 150,150"></polygon>
180</svg>
181<div class="title">
182npm command-line interface
183</div>
184</div>
185</div>
186
187<section id="content">
188<header class="title">
189<h1 id="----npm-query----11130">
190    <span>npm-query</span>
191    <span class="version">@11.13.0</span>
192</h1>
193<span class="description">Dependency selector query</span>
194</header>
195
196<section id="table_of_contents">
197<h2 id="table-of-contents">Table of contents</h2>
198<div id="_table_of_contents"><ul><li><a href="#see-also">See Also</a></li></ul></div>
199</section>
200
201<div id="_content"><h3 id="synopsis">Synopsis</h3>
202<pre><code class="language-bash">npm query &lt;selector&gt;
203</code></pre>
204<h3 id="description">Description</h3>
205<p>The <code>npm query</code> command allows for usage of css selectors in order to retrieve an array of dependency objects.</p>
206<h3 id="piping-npm-query-to-other-commands">Piping npm query to other commands</h3>
207<pre><code class="language-bash"># find all dependencies with postinstall scripts &amp; uninstall them
208npm query ":attr(scripts, [postinstall])" | jq 'map(.name)|join("\n")' -r | xargs -I {} npm uninstall {}
209
210# find all git dependencies &amp; explain who requires them
211npm query ":type(git)" | jq 'map(.name)' | xargs -I {} npm why {}
212</code></pre>
213<h3 id="extended-use-cases--queries">Extended Use Cases &amp; Queries</h3>
214<pre><code class="language-stylus">// all deps
215*
216
217// all direct deps
218:root &gt; *
219
220// direct production deps
221:root &gt; .prod
222
223// direct development deps
224:root &gt; .dev
225
226// any peer dep of a direct deps
227:root &gt; * &gt; .peer
228
229// any workspace dep
230.workspace
231
232// all workspaces that depend on another workspace
233.workspace &gt; .workspace
234
235// all workspaces that have peer deps
236.workspace:has(.peer)
237
238// any dep named "lodash"
239// equivalent to [name="lodash"]
240#lodash
241
242// any deps named "lodash" &amp; within semver range ^"1.2.3"
243#lodash@^1.2.3
244// equivalent to...
245[name="lodash"]:semver(^1.2.3)
246
247// get the hoisted node for a given semver range
248#lodash@^1.2.3:not(:deduped)
249
250// querying deps with a specific version
251#lodash@2.1.5
252// equivalent to...
253[name="lodash"][version="2.1.5"]
254
255// has any deps
256:has(*)
257
258// deps with no other deps (ie. "leaf" nodes)
259:empty
260
261// manually querying git dependencies
262[repository^=github:],
263[repository^=git:],
264[repository^=https://github.com],
265[repository^=http://github.com],
266[repository^=https://github.com],
267[repository^=+git:...]
268
269// querying for all git dependencies
270:type(git)
271
272// get production dependencies that aren't also dev deps
273.prod:not(.dev)
274
275// get dependencies with specific licenses
276[license=MIT], [license=ISC]
277
278// find all packages that have @ruyadorno as a contributor
279:attr(contributors, [email=ruyadorno@github.com])
280</code></pre>
281<h3 id="example-response-output">Example Response Output</h3>
282<ul>
283<li>an array of dependency objects is returned which can contain multiple copies of the same package which may or may not have been linked or deduped</li>
284</ul>
285<pre><code class="language-json">[
286  {
287    "name": "",
288    "version": "",
289    "description": "",
290    "homepage": "",
291    "bugs": {},
292    "author": {},
293    "license": {},
294    "funding": {},
295    "files": [],
296    "main": "",
297    "browser": "",
298    "bin": {},
299    "man": [],
300    "directories": {},
301    "repository": {},
302    "scripts": {},
303    "config": {},
304    "dependencies": {},
305    "devDependencies": {},
306    "optionalDependencies": {},
307    "bundledDependencies": {},
308    "peerDependencies": {},
309    "peerDependenciesMeta": {},
310    "engines": {},
311    "os": [],
312    "cpu": [],
313    "workspaces": {},
314    "keywords": [],
315    ...
316  },
317  ...
318</code></pre>
319<h3 id="expecting-a-certain-number-of-results">Expecting a certain number of results</h3>
320<p>One common use of <code>npm query</code> is to make sure there is only one version of a certain dependency in your tree.
321This is especially common for ecosystems like that rely on <code>typescript</code> where having state split across two different but identically-named packages causes bugs.
322You can use the <code>--expect-results</code> or <code>--expect-result-count</code> in your setup to ensure that npm will exit with an exit code if your tree doesn't look like you want it to.</p>
323<pre><code class="language-sh">$ npm query '#react' --expect-result-count=1
324</code></pre>
325<p>Perhaps you want to quickly check if there are any production dependencies that could be updated:</p>
326<pre><code class="language-sh">$ npm query ':root&gt;:outdated(in-range).prod' --no-expect-results
327</code></pre>
328<h3 id="package-lock-only-mode">Package lock only mode</h3>
329<p>If package-lock-only is enabled, only the information in the package lock (or shrinkwrap) is loaded.
330This means that information from the package.json files of your dependencies will not be included in the result set (e.g. description, homepage, engines).</p>
331<h3 id="configuration">Configuration</h3>
332<h4 id="global"><code>global</code></h4>
333<ul>
334<li>Default: false</li>
335<li>Type: Boolean</li>
336</ul>
337<p>Operates in "global" mode, so that packages are installed into the <code>prefix</code>
338folder instead of the current working directory. See
339<a href="../configuring-npm/folders.html">folders</a> for more on the differences in behavior.</p>
340<ul>
341<li>packages are installed into the <code>{prefix}/lib/node_modules</code> folder, instead
342of the current working directory.</li>
343<li>bin files are linked to <code>{prefix}/bin</code></li>
344<li>man pages are linked to <code>{prefix}/share/man</code></li>
345</ul>
346<h4 id="workspace"><code>workspace</code></h4>
347<ul>
348<li>Default:</li>
349<li>Type: String (can be set multiple times)</li>
350</ul>
351<p>Enable running a command in the context of the configured workspaces of the
352current project while filtering by running only the workspaces defined by
353this configuration option.</p>
354<p>Valid values for the <code>workspace</code> config are either:</p>
355<ul>
356<li>Workspace names</li>
357<li>Path to a workspace directory</li>
358<li>Path to a parent workspace directory (will result in selecting all
359workspaces within that folder)</li>
360</ul>
361<p>When set for the <code>npm init</code> command, this may be set to the folder of a
362workspace which does not yet exist, to create the folder and set it up as a
363brand new workspace within the project.</p>
364<p>This value is not exported to the environment for child processes.</p>
365<h4 id="workspaces"><code>workspaces</code></h4>
366<ul>
367<li>Default: null</li>
368<li>Type: null or Boolean</li>
369</ul>
370<p>Set to true to run the command in the context of <strong>all</strong> configured
371workspaces.</p>
372<p>Explicitly setting this to false will cause commands like <code>install</code> to
373ignore workspaces altogether. When not set explicitly:</p>
374<ul>
375<li>Commands that operate on the <code>node_modules</code> tree (install, update, etc.)
376will link workspaces into the <code>node_modules</code> folder. - Commands that do
377other things (test, exec, publish, etc.) will operate on the root project,
378<em>unless</em> one or more workspaces are specified in the <code>workspace</code> config.</li>
379</ul>
380<p>This value is not exported to the environment for child processes.</p>
381<h4 id="include-workspace-root"><code>include-workspace-root</code></h4>
382<ul>
383<li>Default: false</li>
384<li>Type: Boolean</li>
385</ul>
386<p>Include the workspace root when workspaces are enabled for a command.</p>
387<p>When false, specifying individual workspaces via the <code>workspace</code> config, or
388all workspaces via the <code>workspaces</code> flag, will cause npm to operate only on
389the specified workspaces, and not on the root project.</p>
390<p>This value is not exported to the environment for child processes.</p>
391<h4 id="package-lock-only"><code>package-lock-only</code></h4>
392<ul>
393<li>Default: false</li>
394<li>Type: Boolean</li>
395</ul>
396<p>If set to true, the current operation will only use the <code>package-lock.json</code>,
397ignoring <code>node_modules</code>.</p>
398<p>For <code>update</code> this means only the <code>package-lock.json</code> will be updated,
399instead of checking <code>node_modules</code> and downloading dependencies.</p>
400<p>For <code>list</code> this means the output will be based on the tree described by the
401<code>package-lock.json</code>, rather than the contents of <code>node_modules</code>.</p>
402<h4 id="expect-results"><code>expect-results</code></h4>
403<ul>
404<li>Default: null</li>
405<li>Type: null or Boolean</li>
406</ul>
407<p>Tells npm whether or not to expect results from the command. Can be either
408true (expect some results) or false (expect no results).</p>
409<p>This config cannot be used with: <code>expect-result-count</code></p>
410<h4 id="expect-result-count"><code>expect-result-count</code></h4>
411<ul>
412<li>Default: null</li>
413<li>Type: null or Number</li>
414</ul>
415<p>Tells to expect a specific number of results from the command.</p>
416<p>This config cannot be used with: <code>expect-results</code></p>
417<h2 id="see-also">See Also</h2>
418<ul>
419<li><a href="../using-npm/dependency-selectors.html">dependency selectors</a></li>
420</ul></div>
421
422<footer id="edit">
423<a href="https://github.com/npm/cli/edit/latest/docs/lib/content/commands/npm-query.md">
424<svg role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentcolor" style="vertical-align: text-bottom; margin-right: 0.3em;">
425<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>
426</svg>
427Edit this page on GitHub
428</a>
429</footer>
430</section>
431
432
433
434</body></html>
codekingpro/portable-devtools · Team Ai