Package Versions
Pak uses version strings in the pak.json file in several places. Versions follow the Semver 2 standard. i.e. major.minor.patch[-pre-release] which prescribes the precise meaning of each component of the version string. For example:
$ pak search bootstrap
{
"name": "kickstart",
"version": "0.8.1",
"dependencies": {
"esp-angular": "^5.3",
"esp-mgr-skeleton": "^5.3"
}
}
| Field | Usage | Description |
|---|---|---|
| version | Version String | Package version number. |
| dependencies | Version Expression | Object collection of dependent packages and a version expression criteria. |
| optionalDependencies | Version Expression | Object collection of optionally dependent packages and a version expression criteria. |
Version expressions are also used in Pak override files. See Customizing Packages for more details.
{
"jquery/jquery": {
">=2.1.0": {
/* more */
},
">=1.11.0": {
/* more */
}
}
}
Version Expressions
Version expressions are used by dependency, optionalDependency properties in the pak.json file and in package override files. The following terms are permitted in version expressions.
| Topic | Description |
|---|---|
| 1.2.3 | Simple version. Allows prereleases. |
| 1.2.X | Any patch for 1.2. Allows prereleases. |
| ^1.2.3 | Compatible with 1.2. Same as >=1.2.3 <2.0.0 — does not allow prereleases. |
| ~1.2.3 | Compatible with 1.2. Same as >=1.2.3 <2.0.0 — allows prereleases. |
| >, >=, <, <=, ==, != | Version comparison. |
| expression || expression | Either expression matches. |
| expression && expression | Both expressions must qualify. |
| expression expression | Same as && |
For example:
{
"dependencies" : {
"simple" : "2.0.1",
/* Range of acceptable versions */
"foo" : ">=1.0.0 <2.10.20",
/* Compatible with 1.2 - same minor number, allows pre-releases */
"compat" : "~1.2",
/* Compatible with 1.2 - but no pre-releases */
"full" : "^2.x",
"complex": "1.2.3 || 1.2.8 || 1.3.*",
}
}