@OussamaMater No, you still miss the point.
composer show of a typical project lists approximately 150 packages.
composer.json, your 'overview' for the same project only includes 22 packages.
If you wanted to create a completely off-line installation, you would need all 150 packages loaded to your local repository. Not the 22 described in composer.json.
I agree with you that composer.json lists the top level - the reason all those additional 130 packages are pulled in - but thats not resolving @ligonsker question.
@ligonsker
I would stick with composer show. You could write a line into the composer.json scripts section that runs composer.show and pipes it into a file. You can then include this file in your git version control so that you can track changes.
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi",
"composer show > composer.current"
],
after adding or removing a package, or after composer dump-autoload a new file will be created called composer.current. Your version control will list the lines that have changed in that file.