Mix
Categories: elixir
Renovate supports updating Mix dependencies.
File Matching¶
By default, Renovate will check any files matching the following regular expression: /(^|/)mix\.exs$/.
For details on how to extend a manager's managerFilePatterns value, please follow this link.
Supported datasources¶
This manager supports extracting the following datasources: git-tags, github-tags, hex.
Dependency types¶
This manager extracts the following depType values:
depType |
Description |
|---|---|
prod |
A production dependency |
dev |
A development-only dependency (restricted via only:) |
Default config¶
{
"managerFilePatterns": [
"/(^|/)mix\\.exs$/"
]
}
Lock File Maintenance¶
This manager supports lockFileMaintenance for the following file(s):
mix.lock
Lock file maintenance is delegated to the underlying package manager, which Renovate runs as an external command.
Additional Information¶
The mix manager uses Renovate's implementation of Elixir SemVer to evaluate update ranges.
The mix package manager itself is used to keep the lock file up-to-date.
The following depTypes are currently supported by the mix manager :
prod: all dependencies by defaultdev: dependencies with:onlyoption not containing:prod
lockFileMaintenance¶
We recommend you use lockFileMaintenance for the mix manager.
lockFileMaintenance=true periodically refreshes your mix.lock files, ensuring all indirect dependencies are updated to their latest allowed versions.
This option will be skipped in umbrella projects, as they share a single
mix.lock file for all applications mix.exs files.
Default rangeStrategy=auto behavior¶
Renovate's default rangeStrategy is "auto".
Here's how "auto" works with the mix manager:
| Version type | New version | Old range | New range after update | What Renovate does |
|---|---|---|---|---|
| Complex range | 1.7.2 |
< 1.7.0 or ~> 1.7.1 |
< 1.7.0 or ~> 1.7.2 |
Widen range to include the new version. |
| Simple range | 0.39.0 |
<= 0.38.0 |
<= 0.39.0 |
If update outside current range: widens range to include the new version. |
| Exact version constraint | 0.13.0 |
== 0.12.0 |
== 0.13.0 |
Replace old version with new version. |
Recommended rangeStrategy for apps and libraries¶
For applications, we recommend using rangeStrategy=pin.
This pins your dependencies to exact versions, which is generally considered best practice for apps.
For libraries, use rangeStrategy=widen with version ranges in your mix.exs.
This allows for greater compatibility with other projects that may use your library as a dependency.