The release.json
file at the root of the repo determines which release line
this branch belongs to.
{
"majorVersion": 1 | 2,
"releaseType": "stable" | "alpha" | "rc"
}
To reduce merge conflicts in automatic merges between version branches, the
current version number is stored under version.vNN.json
(where NN
is
majorVersion
) and changelogs are stored under CHANGELOG.NN.md
(for
historical reasons, the changelog for 1.x is under CHANGELOG.md
). When we
fork to a new release branch (e.g. v2-main
), we will update release.json
in
this branch to reflect the new version line, and this information will be used
to determine how releases are cut.
The actual version
field in all package.json
files should always be 0.0.0
.
This means that local development builds will use version 0.0.0
instead of the
official version from the version file.
This script uses standard-version to update the version in version.vNN.json
to the next version. By default it will perform a minor bump, but ./bump.sh patch
can be used to perform a patch release if that's needed.
This script will also update the relevant changelog file.
The script evaluates evaluates the configuration in release.json
and exports an
object like this:
{
version: '2.0.0-alpha.1', // the current version
versionFile: 'version.v2.json', // the version file
changelogFile: 'CHANGELOG.v2.md', // changelog file name
prerelease: 'alpha', // prerelease tag (undefined for stable)
marker: '0.0.0' // version marker in package.json files
}
In official builds, the scripts/align-version.sh
is used to update all
package.json
files based on the version from version.vNN.json
.