Developing software in the Real World

A few composer tips

I recently learned about a couple of features of composer that I thought I’d write down here so that I don’t forget them! I also had to deal with a conflict in composer.lock recently, so I’ve noted down how I solved that too.

List installed versions

To list the current versions of all installed dependencies:

The output looks something like:

Very useful for working out exactly what’s installed.

Set PHP version

To set the version of PHP that composer will use to resolve dependencies, add this to your composer.json file:

You can now run composer update on a PHP 7 installation and it will create a composer.lock file suitable for a server running PHP 5.6.19.

Resolving a conflict in composer.lock

When you merge a feature branch into develop and get a conflict in composer.lock, I’ve found these strategies work best for me:

Just the hash

If the only conflict is in the "hash" and "content-hash" lines, then pick either choice and then run:

Any other conflict

For any other conflict where you want to keep the current set of versions on develop:

  1. Retrieve the correct lock file for develop: git merge --ours
  2. Add in each new dependency in the merged composer.json that’s not in the original develop’s composer.json using

The end result is a composer.lock file with the original information from develop along with the new packages from the feature branch.

Thoughts? Leave a reply

Your email address will not be published. Required fields are marked *