99 lines
3.0 KiB
Markdown
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.
|