You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/content/using-npm/dependency-selectors.md
+22-1Lines changed: 22 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -58,10 +58,31 @@ The [`npm query`](/commands/npm-query) commmand exposes a new dependency selecto
58
58
-`:extraneous` when a dependency exists but is not defined as a dependency of any node
59
59
-`:invalid` when a dependency version is out of its ancestors specified range
60
60
-`:missing` when a dependency is not found on disk
61
-
-`:semver(<spec>)`matching a valid [`node-semver`](https://github.com/npm/node-semver)spec
61
+
-`:semver([spec], [selector], [function])`match a valid [`node-semver`](https://github.com/npm/node-semver)version or range to an optional selector (defaults to `[version]`) and providing an optional semver function name
62
62
-`:path(<path>)`[glob](https://www.npmjs.com/package/glob) matching based on dependencies path relative to the project
63
63
-`:type(<type>)`[based on currently recognized types](https://github.com/npm/npm-package-arg#result-object)
64
64
65
+
##### `:semver([spec], [selector], [function])`
66
+
67
+
The `:semver()` pseudo selector allows comparing fields from each node's `package.json` using [semver](https://github.com/npm/node-semver#readme) methods. It accepts up to 3 parameters, all of which are optional.
68
+
69
+
-`spec` a semver version or range (no default)
70
+
-`selector` an attribute selector for each node
71
+
-`function` a semver method to apply, one of: `satisfies`, `intersects`, `subset`, `gt`, `gte`, `gtr`, `lt`, `lte`, `ltr`, `eq` or `neq`
72
+
73
+
If no `spec` is provided this selector will return every node that defines a `version`.
74
+
75
+
If only a `spec` is provided `selector` defaults to `[version]` and `function` to `satisfies`.
76
+
77
+
If a `spec` and a `selector` are provided, the `function` will default to one of `satisfies`, `intersects` or `eq` depending on the value of the `spec` as well as the resulting value of the `selector`. If both values are versions `eq` is used. If both values are ranges `intersects` is used. If the values are mixed types `satisfies` is used. Any other semver method must be passed explicitly.
78
+
79
+
Some examples:
80
+
81
+
-`:semver()` returns every node that has a defined `version`
82
+
-`:semver(^1.0.0)` returns every node that has a `version` satisfied by the provided range `^1.0.0`
83
+
-`:semver(16.0.0, :attr(engines, [node]))` returns every node which has an `engines.node` property satisfying the version `16.0.0`
84
+
-`:semver(1.0.0, [version], lt)` every node with a `version` less than `1.0.0`
0 commit comments