Node package.json Dependencies

node.js

Solution

From the documentation:

The following range styles are supported:

- `1.2.3` A specific version. When nothing else will do. Note that build metadata is still ignored, so `1.2.3+build2012` will satisfy this range.

- `>1.2.3` Greater than a specific version.

- `<1.2.3` Less than a specific version. If there is no prerelease tag on the version range, then no prerelease version will be allowed either, even though these are technically "less than".

- `>=1.2.3` Greater than or equal to. Note that prerelease versions are NOT equal to their "normal" equivalents, so `1.2.3-beta` will not satisfy this range, but `2.3.0-beta` will.

- `<=1.2.3` Less than or equal to. In this case, prerelease versions ARE allowed, so `1.2.3-beta` would satisfy.

- `1.2.3 - 2.3.4` := `>=1.2.3` `<=2.3.4`

- `~1.2.3` := `>=1.2.3-0 <1.3.0-0` "Reasonably close to 1.2.3". When using tilde operators, prerelease versions are supported as well, but a prerelease of the next significant digit will NOT be satisfactory, so `1.3.0-beta` will not satisfy `~1.2.3`.

- `~1.2` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"

- `1.2.x` := `>=1.2.0-0 <1.3.0-0`"Any version starting with 1.2"

- `~1` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"

- `1.x` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1" Ranges can be joined with either a space (which implies "and") or a `||` (which implies "or").

Addendum:

`*` means any version.

Problem

New to Nodejs and looking at the dependencies section of the package.json file. Could someone explain to me what the `~` and `*` symbols do when setting the versions?

Original source