Provided by: npm_9.2.0~ds1-1_all bug

NAME

       npm-query

Synopsis

       <!-- AUTOGENERATED USAGE DESCRIPTIONS -->

Description

       The npm query command allows for usage of css selectors in order to retrieve
       an array of dependency objects.

Piping npm query to other commands

         # find all dependencies with postinstall scripts & uninstall them
         npm query ":attr(scripts, [postinstall])" | jq 'map(.name)|join("\n")' -r | xargs -I {} npm uninstall {}

         # find all git dependencies & explain who requires them
         npm query ":type(git)" | jq 'map(.name)' | xargs -I {} npm why {}

Extended Use Cases & Queries

         // all deps
         *

         // all direct deps
         :root > *

         // direct production deps
         :root > .prod

         // direct development deps
         :root > .dev

         // any peer dep of a direct deps
         :root > * > .peer

         // any workspace dep
         .workspace

         // all workspaces that depend on another workspace
         .workspace > .workspace

         // all workspaces that have peer deps
         .workspace:has(.peer)

         // any dep named "lodash"
         // equivalent to [name="lodash"]
         #lodash

         // any deps named "lodash" & within semver range ^"1.2.3"
         #lodash@^1.2.3
         // equivalent to...
         [name="lodash"]:semver(^1.2.3)

         // get the hoisted node for a given semver range
         #lodash@^1.2.3:not(:deduped)

         // querying deps with a specific version
         #lodash@2.1.5
         // equivalent to...
         [name="lodash"][version="2.1.5"]

         // has any deps
         :has(*)

         // deps with no other deps (ie. "leaf" nodes)
         :empty

         // manually querying git dependencies
         [repository^=github:],
         [repository^=git:],
         [repository^=https://github.com],
         [repository^=http://github.com],
         [repository^=https://github.com],
         [repository^=+git:...]

         // querying for all git dependencies
         :type(git)

         // get production dependencies that aren't also dev deps
         .prod:not(.dev)

         // get dependencies with specific licenses
         [license=MIT], [license=ISC]

         // find all packages that have @ruyadorno as a contributor
         :attr(contributors, [email=ruyadorno@github.com])

Example Response Output

        • 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

         [
           {
             "name": "",
             "version": "",
             "description": "",
             "homepage": "",
             "bugs": {},
             "author": {},
             "license": {},
             "funding": {},
             "files": [],
             "main": "",
             "browser": "",
             "bin": {},
             "man": [],
             "directories": {},
             "repository": {},
             "scripts": {},
             "config": {},
             "dependencies": {},
             "devDependencies": {},
             "optionalDependencies": {},
             "bundledDependencies": {},
             "peerDependencies": {},
             "peerDependenciesMeta": {},
             "engines": {},
             "os": [],
             "cpu": [],
             "workspaces": {},
             "keywords": [],
         ...
           },
         ...

Configuration

       <!-- AUTOGENERATED CONFIG DESCRIPTIONS -->

See Also

        • dependency selectors