nx/docs/shared/recipes/nx-release/configuration-version-prefix.md

99 lines
3.0 KiB
Markdown

---
title: Configure Version Prefix for Dependencies
description: Learn how to set up custom version prefixes in Nx Release to control how dependency versions are specified in your package.json files, with options for exact, patch, or minor-level compatibility.
---
# Configuring Version Prefix for Dependency Versions
This guide explains how to configure a custom version prefix in Nx Release using the `versionPrefix` option. The version prefix allows you to automatically add a specific prefix format to dependencies, providing control over how dependency versions are specified in your project's `package.json` files.
## The `versionPrefix` Option
The `versionPrefix` option controls which prefix is applied to dependency versions during the versioning process. By default, `versionPrefix` is set to `"auto"`, which selects a prefix format (either `""`, `"~"`, `"^"`, or `"="`) by respecting what is already in the `package.json` file.
For example, having the following `package.json` file:
```json
{
"name": "my-package",
"version": "0.1.1",
"dependencies": {
"dependency-one": "~1.2.3",
"dependency-two": "^2.3.4",
"dependency-three": "3.0.0"
}
}
```
Then next patch bump will be:
```json
{
"name": "my-package",
"version": "0.1.2",
"dependencies": {
"dependency-one": "~1.2.4",
"dependency-two": "^2.3.4",
"dependency-three": "3.0.0"
}
}
```
Preserving the prefix for `dependency-one` and `dependency-two` and continuing to use no prefix for `dependency-three`.
### Available Prefix Options
You can set `versionPrefix` to one of the following values:
- `"auto"`: Automatically chooses a prefix based on the existing declaration in the `package.json` file. This is the default value.
- `""`: Uses the exact version without a prefix.
- `"~"`: Specifies compatibility with patch-level updates.
- `"^"`: Specifies compatibility with minor-level updates.
- `"="`: Locks the version to an exact match (the `=` is not commonly used in the JavaScript ecosystem, but is in others such as Cargo for Rust).
Example configuration:
```json
{
"release": {
"version": {
"generatorOptions": {
"versionPrefix": "~"
}
}
}
}
```
## Configuring Version Prefix in `nx.json` or `project.json`
To set the versionPrefix option globally or for a specific project, add it to either your `nx.json` or `project.json` configuration files:
```jsonc
{
"release": {
"version": {
"generatorOptions": {
"versionPrefix": "^" // or "", "~", "^", "=" depending on your preference
}
}
}
}
```
With the `versionPrefix` option set to `^`, your `package.json` dependencies might look like this:
```json
{
"name": "my-package",
"version": "0.1.1",
"dependencies": {
"dependency-one": "^1.0.0",
"dependency-two": "^2.3.4",
"dependency-three": "^3.0.0"
}
}
```
This configuration helps enforce a consistent approach to dependency management, allowing flexibility in how updates to dependencies are tracked and managed across your project.