# Bump Algorithm
Bumping a single package is a simple task of just looking up a change file for its change type and using semver to bump the version according to what that change type is.
Things get a bit more complicated when we introduce the concepts of version groups and dependent package bumping. For the sake of describing this algorithm, we can take a look at the following graph:
# Dependent version bumping
In the above example, the app
package is dependent on fooLib
. Let's assume that the developer has created a minor
change inside fooLib
. By default, beachball
will also bump app
with a patch
change type, like this:
To modify what the dependent package bumped change type would be (e.g. making app
also bump with minor
in the above example), you have to modify the change file to specify this. Here's an example of a change file under /changes
:
{
"comment": "Upgrading fooLib",
"type": "patch",
"packageName": "fooLib",
"email": "me@me.me",
"commit": "b785112c03f063b71d936ff052470817019267d4",
"date": "2019-06-20T22:54:59.172Z",
+ "dependentChangeType": "minor"
}
# Grouped bumping
In the above example, fooUtils
, styleUtils
, dateUtils
all belong to a utils
group. Whenever one of those packages get bumped, the entire group would get bumped by the same change type. We can illustrate it like so:
NOTE: the group get bumped together even if it is part of a dependent package bump. In other words, package bumps propagate their changes via dependent package bumps as well as group package bumps.