Sobes.tech
Junior

What is the difference between composer.json and composer.lock files?

sobes.tech AI

Answer from AI

composer.json contains the project's dependencies (packages and their versions), explicitly specified (for example, >=1.0 <2.0).

composer.lock is a generated file that records the exact versions of all installed dependencies along with their sub-dependencies.

Differences:

  • Content: composer.json — dependency requirements, composer.lock — exact versions of installed dependencies.
  • Authors: composer.json — developer, composer.lock — Composer (generated by the composer install or composer update command).
  • Purpose: composer.json — defining dependencies, composer.lock — ensuring reproducibility of builds across different environments.
  • In version control systems: Usually both files are added (git add) and committed (git commit).

When installing dependencies, Composer first checks composer.lock. If it exists, it installs the exact versions from it. If it does not exist or composer update is run, dependencies are selected and installed according to composer.json, and then composer.lock is updated.