View Source Version levels

Version level increases follow semantic versioning conventions.

Expublish.Semver defines the level type as:

@type level() :: :major | :minor | :patch | :rc | :beta | :alpha | :stable

major-releases-reset-minor-and-patch-levels

Major releases reset minor and patch levels

# current version: "0.1.4"

expublish.major => "1.0.0"

minor-releases-reset-patch-level

Minor releases reset patch level

# current version: "0.1.4"

expublish.minor => "0.2.0"

first-pre-release-patches-the-current-version-by-default

First pre-release patches the current version by default

# current version: "0.0.0"

expublish.alpha  => "0.0.1-alpha"
expublish.beta   => "0.0.1-beta"
expublish.rc     => "0.0.1-rc"

Note that using a higher pre-release level does not increase the version number.

pre-releases-can-be-declared-stable

Pre-releases can be declared stable

# current version: "1.0.1-rc"

expublish.stable => "1.0.1"

Note that expublish.stable only drops the pre-release suffix but does not increase the version number.

an-already-stable-version-can-not-be-redeclared-stable

An already stable version can not be redeclared stable

# current version: "1.0.1"

expublish.stable => Error: can not release already stable version "1.0.1"

pre-release-levels-can-not-be-applied-backwards

Pre-release levels can not be applied backwards

# current version: "1.0.0-rc"

expublish.alpha  => Error: current version rc > alpha
expublish.beta   => Error: current version rc > beta
expublish.rc     => "1.0.1-rc"

patch-and-current-pre-release-levels-can-be-used-interchangeably

Patch and current pre-release levels can be used interchangeably

# current version: "0.1.4-beta"

expublish.patch => "0.1.5-beta"
expublish.beta  => "0.1.6-beta"
expublish.patch => "0.1.7-beta"
expublish.rc    => "0.1.7-rc"
expublish.patch => "0.1.8-rc"

pre-releases-can-increase-by-different-version-levels

Pre-releases can increase by different version levels

# current version: "0.0.0"

expublish.alpha           => "0.0.1-alpha"
expublish.beta --as-minor => "0.1.0-beta"
expublish.rc --as-major   => "1.0.0-rc"

pre-release-levels-can-be-skipped

Pre-release levels can be skipped

# current version: "1.0.1-alpha"

expublish.rc => "1.0.1-rc"