Skip to content

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 default
  • dev: dependencies with :only option 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.

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.