Create a list of used libraries and their version

Hi,

I'm used to creating npm-based javascript projects, and when doing so, a project specific package.json file is created which contains all used libraries and their version.
This makes it really easy to download/update all required libraries on another machine.

Is there any such mechanism in Arduino IDE available?

Thanks a lot,

Michiel

there is no mandatory version "flag" or define or variable number when you develop a library, so the concept of version does not make general sense unfortunately.

well conceived libraries you download through the IDE contain a library.properties file (for example https://github.com/jandrassy/ArduinoOTA/blob/master/library.properties or https://github.com/knolleary/pubsubclient/blob/master/library.properties, ..) with a version field.

may be by extracting the verbose output of the compilation you can build something that matches your need. For example (translated) that's what I see when compiling a project I'm working on

...
Using library SPIFFS version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPIFFS 
Using library FS version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/FS 
Using library WiFi version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi 
Using library WiFiManager version 2.0.4-beta in directory: ~/Documents/Arduino/libraries/WiFiManager 
Using library Update version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/Update 
Using library WebServer version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WebServer 
Using library DNSServer version 1.1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/DNSServer 
Using library ArduinoOTA version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/ArduinoOTA 
Using library pubsubclient version 2.8 in directory: ~/Documents/Arduino/libraries/pubsubclient 
Using library ESPmDNS version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/ESPmDNS 
...

You might be interested in this document which describes Arduino's plans for the creation of a manifest file for Arduino sketches which defines all the dependencies:
https://github.com/arduino/tooling-rfcs/blob/main/RFCs/0003-build-profiles.md#user-content-sketch-build-profiles-and-reproducible-builds

But that is only a plan at this point, so nothing that will help you right now.

One thing you should note about this list of libraries shown in the verbose output is that some of these may be "platform bundled libraries", which are installed as a component of the boards platform (usually installed via Boards Manager). You will not install the platform bundled libraries on their own, so the version of interest for those libraries is actually the platform version.

For example:

Using library SPIFFS version 1.0 in directory: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPIFFS 

The library version is 1.0, but the platform version is 1.0.6. The machine readable reference for this platform is esp32:esp32@1.0.6