Skip to main content

IDF Component Manager

The IDF Component Manager is a tool that ensures the correct versions of all components required for a successful build are present in your ESP-IDF project.

Contributing to the project

See CONTRIBUTING.md

Resources

Develop ESP-IDF projects with the IDF Component Manager

Installing a development version of the Component Manager

You can install the development version of the Component Manager from the main branch of this repository:

On Linux/macOS:

Go to the directory with your ESP-IDF installation and run:

# activate ESP-IDF environment
source ./export.sh # or . ./export.fish, if you use fish shell
# remove old version of the Component Manager
python -m pip uninstall -y idf-component-manager
# install the development version (from the main branch)
python -m pip install git+https://github.com/espressif/idf-component-manager.git@main

On Windows:

Run ESP-IDF PowerShell Environment or ESP-IDF Command Prompt (cmd.exe) from the Start menu and run the following command:

# remove old version of the Component Manager
python -m pip uninstall -y idf-component-manager
# install the development version (from the main branch)
python -m pip install git+https://github.com/espressif/idf-component-manager.git@main

Disabling the Component Manager

The Component Manager can be explicitly disabled by setting IDF_COMPONENT_MANAGER environment variable to 0.

Using with a project

You can add idf_component.yml manifest files with the list of dependencies to any component in your project.

IDF Component Manager will download dependencies automatically during the project build process.

When CMake configures the project (e.g. idf.py reconfigure) Component Manager does a few things:

  • Processes idf_component.yml manifests for every component in the project
  • Creates a dependencies.lock file in the root of the project with a full list of dependencies
  • Downloads all dependencies to the managed_components directory

The Component Manager won't try to regenerate dependencies.lock or download any components if manifests, lock file, and content of managed_component directory weren't modified since the last successful build.

Defining dependencies in the manifest

All dependencies are defined in the manifest file.

dependencies:
  # Required IDF version
  idf: ">=4.1"
  # For components maintained by Espressif only name can be used.
  # Same as `espressif/component`
  component:
    version: "~2.0.0"
  # Or in a shorter form
  component2: ">=1.0.0"
  # For 3rd party components :
  username/component:
    version: "~1.0.0"
    # For transient dependencies `public` flag can be set.
    public: true
  anotheruser/component: "<3.2.20"
  # For components hosted on non-default registry:
  company_user/component:
    version: "~1.0.0"
    registry_url: "https://componentregistry.company.com"
  # For components in git repository:
  test_component:
    path: test_component
    git: ssh://git@gitlab.com/user/components.git
  # For test projects during component development
  # components can be used from a local directory
  # with relative or absolute path
  some_local_component:
    path: ../../projects/component
  # For optional dependencies
  optional_component:
    version: "~1.0.0"
    rules: # will add "optional_component" only when all if clauses are True
      - if: "idf_version >=3.3,<5.0" # supports all SimpleSpec grammars (https://python-semanticversion.readthedocs.io/en/latest/reference.html#semantic_version.SimpleSpec)
      - if: "target in [esp32, esp32c3]" # supports boolean operator ==, !=, in, not in.
  # For example of the component
  namespace/component_with_example:
    version: "~1.0.0" # if there is no `override_path` field, use component from registry
    override_path: "../../" # use component in a local directory, not from registry
  namespace/no_required_component:
    version: "*"
    require: no # Download component but don't add it as a requirement
  namespace/pre_release_component:
    version: "*"
    pre_release: true # Allow downloading of pre-release versions

Component metadata caching

By default, information about available versions of components not cached. If you make many requests to the registry from one machine, you can enable caching by setting IDF_COMPONENT_API_CACHE_EXPIRATION_MINUTES environment variable to the number of minutes to cache the data.

External links

You can add links to the idf_component.yml file to the root of the manifest:

url: "https://example.com/homepage" # URL of the component homepage
repository: "https://gitexample.com/test_project" # URL of the public repository with component source code, i.e GitHub, GitLab, etc.
documentation: "https://example.com/documentation" # URL of the component documentation
issues: "https://git.example.com/test_project/tracker" # URL of the issue tracker
discussion: "https://discord.example.com/test_project" # URL of the component discussion, i.e. Discord, Gitter, forum, etc.

A link should be a correct HTTP(S) URL like https://example.com/path except the repository field, it is expected to be a valid Git remote URL.

Add examples to the component

To add examples to your component, place them in the examples directory inside your component. Examples are discovered recursively in subdirectories at this path. A directory with CMakeLists.txt that registers a project is considered as an example.

Custom example paths

You can specify custom example paths for uploading them to the component registry. For that, add examples field to the root of the manifest:

examples:
  - path: ../some/path
  - path: ../some/other_path
  # - path: examples/some_example # this example will be discovered automatically

Release files for idf-component-manager 3.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for idf-component-manager 3.1.2
File Size Uploaded
idf_component_manager-3.1.2.tar.gz 188.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for idf-component-manager 3.1.2
File Interpreter ABI Platform
idf_component_manager-3.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 387.9 kB

Release files / idf_component_manager-3.1.2.tar.gz

Download URL idf_component_manager-3.1.2.tar.gz
Size 188.2 kB
Tags Source
SHA-256 checksum
How to use checksums
75ad9e4452d1bf42bea0a77d72af679714e2bb147627d926cee114122b6e33a0
BLAKE2b-256 checksum
How to use checksums
fb26a911d11e7e08f0cdf0175b33b99667dc125496f79ee9ad851a6ffd390222
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / idf_component_manager-3.1.2-py3-none-any.whl

Download URL idf_component_manager-3.1.2-py3-none-any.whl
Size 199.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
424494493b47b61ea0f7666d3018a71deecb77f21186bc8b6761b0b6f98e8f90
BLAKE2b-256 checksum
How to use checksums
57a004afcbbef0e10e4de9132a57bfc89a7b5bc64d775f4f266d5ba149c8e53f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

3.1.2 This release

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.10

2 release files

2.4.9

2 release files

2.4.8

2 release files

2.4.7

2 release files

2.4.6

2 release files

2.4.5

2 release files

2.4.4

2 release files

2.4.3

2 release files

2.4.2

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page