How to update a single library with Composer? – Symfony

Photo of author
Written By M Ibrahim
composer-php symfony

Quick Fix: Run ‘composer update doctrine/doctrine-fixtures-bundle’ to update only the ‘doctrine/doctrine-fixtures-bundle’ library, and keep the rest of the dependencies as they are.

The Problem:

In a Symfony 2 project, you need to install only a single package, DoctrineFixtures. However, running the command php composer.phar update results in the update of numerous other packages as well. Direct package update using php composer.phar update <package_name> does not seem to work. You need to find a solution to install or update only the specified library using Composer.

The Solutions:

Solution 1: Update a single library with Composer

  1. To install doctrine/doctrine-fixtures-bundle with version 2.1.* and minimum stability @dev, use this command:

    composer require doctrine/doctrine-fixtures-bundle:2.1.*@dev
    
  2. To update only this single package, run this command:

    composer update doctrine/doctrine-fixtures-bundle
    

Solution 2: Install packages selectivey

To update only a single library, rather than updating all the libraries at once, you can use the following command:

php composer.phar update vendor/package:2.*

This will update the package with the name `vendor/package` to the latest version that matches the version constraint `2.*`. You can also use wildcards to update multiple packages at once. For example, the following command will update all packages in the `vendor` directory:

php composer.phar update vendor/*

Additionally, you can use the following flags to control the behavior of the `update` command:

  • **–prefer-source**: Install packages from `source` when available.
  • **–prefer-dist**: Install packages from `dist` when available.
  • **–ignore-platform-reqs**: ignore `php`, `hhvm`, `lib-*` and `ext-*` requirements and force the installation even if the local machine does not fulfill these. See also the `platform` [config option](https://getcomposer.org/doc/04-schema.md#config).
  • **–dry-run**: Simulate the command without actually doing anything.
  • **–dev**: Install packages listed in `require-dev` (this is the default behavior).
  • **–no-dev**: Skip installing packages listed in `require-dev`. The autoloader generation skips the `autoload-dev` rules.
  • **–no-autoloader**: Skips autoloader generation.
  • **–no-scripts**: Skips execution of scripts defined in composer.json.
  • **–no-plugins**: Disables plugins.
  • **–no-progress**: Removes the progress display that can mess with some terminals or scripts which don’t handle backspace characters.
  • **–optimize-autoloader (-o)**: Convert PSR-0/4 autoloading to classmap to get a faster autoloader. This is recommended especially for production, but can take a bit of time to run so it is currently not done by default.
  • **–lock**: Only updates the lock file hash to suppress warning about the lock file being out of date.
  • **–with-dependencies**: Add also all dependencies of whitelisted packages to the whitelist.
  • **–prefer-stable**: Prefer stable versions of dependencies.
  • **–prefer-lowest**: Prefer lowest versions of dependencies. Useful for testing minimal versions of requirements, generally used with `–prefer-stable`.

Solution 3: Difference between install, update and require

Assume the following scenario:

composer.json

"parsecsv/php-parsecsv": "0.*"

composer.lock file

  "name": "parsecsv/php-parsecsv",
            "version": "0.1.4",

>Latest release is 1.1.0. The latest 0.* release is 0.3.2

install: composer install parsecsv/php-parsecsv

This will install version 0.1.4 as specified in the lock file

update: composer update parsecsv/php-parsecsv

This will update the package to 0.3.2. The highest version with respect to your composer.json. The entry in composer.lock will be updated.

require: composer require parsecsv/php-parsecsv

This will update or install the newest version 1.1.0. Your composer.lock file and composer.json file will be updated as well.

Solution 4: Update a single library with dependencies

To update a single library along with its dependencies, use the following command:

composer update vendor-name/module-name --with-dependencies

Solution 5: Using Composer Require Command

To update or install a single library using Composer, you can utilize the following steps:

  1. Open your terminal or command prompt.
  2. Navigate to the directory of your composer.json file.
  3. Run the following command:
  4. php composer.phar require [package_name]
  5. Press enter.
  6. Composer will prompt you to confirm the installation. Type “yes” and press enter.
  7. Composer will download and install the specified package.

Alternatively, if you want to install a specific version of the package, you can use the following command:

php composer.phar require [package_name]:[version]

For example, to install version 1.0.0 of the “doctrine/doctrine-fixtures-bundle” package, you would run the following command:

php composer.phar require doctrine/doctrine-fixtures-bundle:1.0.0