* Update .npmignore * Create a Publish package to NPM action * Branches, versions and releases — complete guideline * Update docs/releases.md Co-authored-by: Peter Savchenko <specc.dev@gmail.com> * Update docs/releases.md Co-authored-by: Peter Savchenko <specc.dev@gmail.com> * Update releases.md Co-authored-by: Peter Savchenko <specc.dev@gmail.com>
3 KiB
Branches, versions and releases — complete guideline
Branches
The project has two main branches: master
and next
.
Branch master
contains the latest stable version of the editor.
The latest version published to NPM available by default or by the tag latest
.
Branch next
used for development the next (release candidate) version of the editor.
It may contain bug fixes, improvements or features. This version is available in NPM by next
tag.
Versions
We use semantic versioning as a main guide for naming updates.
<major>.<minor>.<patch>
You need to bump the part of version according the changes:
patch
— for bug fixes, docs updates, code style fixes and other changes which do not affect the result project bundleminor
— for new features with no backward compatibility problems.major
— for breaking changes without backward compatibility with the api of the previous version of the project.
Pre-release versions may contain additional -rc.*
suffix.
Release publishing
👉 Stable versions are published to releases from
master
branch.
There is an action that fired on a new release publishing on GitHub.
After update merging, when a new package version is ready to be published, create a new release with the correct version tag.
Use target version changelog as a description.
Then you can publish the release and wait for package publishing via action.
This package version will be published to NPM with default latest
tag.
Release candidate publishing
👉 Release candidate versions are published to releases from default
next
branch.
If you want to publish release candidate version, use suffix -rc.*
for package version in package.json file and in tag on releases page.
This package version will be published to NPM with next
tag.
Stable version: 2.19.0
Release candidate: 2.19.1-rc.0
, 2.19.1-rc.1
, ...
Next version: 2.19.1
Do not forget to mark this release as a pre-release!
Example pipeline
Let's imagine that package version is 2.19.0
and you want to add some bug fixes and publish an update as 2.19.1
.
- Merge a single update or a few pulls with fixes to the default branch
next
. - Bump the version up to
2.19.1-rc.0
in the package.json. For the rest rc updates you should bump version number in suffix (to2.19.1-rc.1
etc). - Create a new release on the releases page with tag
v2.19.1-rc.0
and mark "This is pre-release" checkbox. Action will automatically push the package to NPM with tagnext
. - When you ready to publish a release, remove suffix from version name in package.json (
2.19.1-rc.0
->v2.19.1
) and push changes. - Merge branch
next
tomaster
and create a new release with tagv2.19.1
. Same action will publish a new package aslatest
update.