yarn version
Updates the package version.
Updating versions
Using the yarn version
command you can update the version of your package via
the command line.
For example, starting with this package.json package.json
:
{
"name": "example-yarn-package",
"version": "1.0.1",
"description": "An example package to demonstrate Yarn"
}
When we run the yarn version
command:
yarn version
info Current version: 1.0.1
question New version: 1.0.2
info New version: 1.0.2
✨ Done in 9.42s.
We will get this updated package.json
:
{
"name": "example-yarn-package",
"version": "1.0.2",
"description": "An example package to demonstrate Yarn"
}
Note: The new version you enter must be a valid SemVer version.
Git tags
If you run yarn version
within a Git repository an
annotated Git tag will be created by
default following the format v0.0.0
.
You can customize the git tag that is created or disable this behavior by using
yarn config set
.
To change the prefix of the git tag you can use version-tag-prefix
:
yarn config set version-tag-prefix "v"
Or you can change the git message using version-git-message
where %s
is the
version string:
yarn config set version-git-message "v%s"
You can also turn signing git tags on or off using version-sign-git-tag
:
yarn config set version-sign-git-tag false
You can even enable or disable the git tagging behavior entirely by using
version-git-tag
:
yarn config set version-git-tag true
If you would like to stop git commit hooks from running, you can disable them
using version-commit-hooks
:
yarn config set version-commit-hooks false
Version lifecycle methods
When the yarn version
command is run it will also run the usual lifecycle methods in the following order:
yarn preversion
yarn version
yarn postversion
In these scripts you also get some handy environment variables, e.g. npm_package_version
will in the preversion
script hold the version before the version change, and in the postversion
script it will hold the version after the version change.
This becomes useful when using yarn with git to publish new tags. Here is an example of what a package.json file could look like:
{
"name": "example-yarn-package",
"version": "1.0.2",
"description": "An example package to demonstrate Yarn",
"scripts": {
"test": "echo \"Running tests for version $npm_package_version...\"",
"preversion": "yarn test",
"postversion":
"git push --tags && yarn publish . --tag $npm_package_version && git push && echo \"Successfully released version $npm_package_version!\""
}
}
Running yarn version
would look something like this:
info Current version: 1.0.2
Running tests for version 1.0.2...
✨ Done in 0.10s.
info New version: 2.0.0
...
To github.com:example-org/example-yarn-package.git
* [new tag] v2.0.0 -> v2.0.0
...
Successfully released version 2.0.0!
✨ Done in 2.72s.
After this both the remote repository should reflect the updated version and the package should be published under the same version.
Commands
yarn version
Create a new version using an interactive session to prompt you for a new version.
yarn version --new-version <version>
Creates a new version specified by <version>
.
yarn version --major
yarn version --minor
yarn version --patch
Creates a new version by incrementing the major, minor, or patch number of the current version.
yarn version --premajor
yarn version --preminor
yarn version --prepatch
Creates a new prerelease version by incrementing the major, minor, or patch number of the current version and adding a prerelease number.
yarn version --prerelease
Increments the prerelease version number keeping the main version.
yarn version [--premajor | --preminor | --prepatch | --prerelease] --preid <pre-identifier>
Adds an identifier specified by <pre-identifier>
to be used to prefix premajor, preminor, prepatch or prerelease version increments.
yarn version --no-git-tag-version
Creates a new version without creating a git tag.
yarn version --no-commit-hooks
Bypasses running commit hooks when committing the new version.