community.general.composer – Dependency Manager for PHP

Note

This plugin is part of the community.general collection (version 3.8.1).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.general.

To use it in a playbook, specify: community.general.composer.

Synopsis

  • Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs and it will install them in your project for you.

Requirements

The below requirements are needed on the host that executes this module.

  • php

  • composer installed in bin path (recommended /usr/local/bin) or specified in composer_executable

Parameters

Parameter Choices/Defaults Comments
apcu_autoloader
boolean
    Choices:
  • no ←
  • yes
Uses APCu to cache found/not-found classes
Alias apcu-autoloader has been deprecated and will be removed in community.general 5.0.0.

aliases: apcu-autoloader
arguments
string
Composer arguments like required package, version and so on.
classmap_authoritative
boolean
    Choices:
  • no ←
  • yes
Autoload classes from classmap only.
Implicitely enable optimize_autoloader.
Recommended especially for production, but can take a bit of time to run.
Alias classmap-authoritative has been deprecated and will be removed in community.general 5.0.0.

aliases: classmap-authoritative
command
string
Default:
"install"
Composer command like "install", "update" and so on.
composer_executable
path
added in 3.2.0 of community.general
Path to composer executable on the remote host, if composer is not in PATH or a custom composer is needed.
executable
path
Path to PHP Executable on the remote host, if PHP is not in PATH.

aliases: php_path
global_command
boolean
    Choices:
  • no ←
  • yes
Runs the specified command globally.
Alias global-command has been deprecated and will be removed in community.general 5.0.0.

aliases: global-command
ignore_platform_reqs
boolean
    Choices:
  • no ←
  • yes
Ignore php, hhvm, lib-* and ext-* requirements and force the installation even if the local machine does not fulfill these.
Alias ignore-platform-reqs has been deprecated and will be removed in community.general 5.0.0.

aliases: ignore-platform-reqs
no_dev
boolean
    Choices:
  • no
  • yes ←
Disables installation of require-dev packages (see --no-dev).
Alias no-dev has been deprecated and will be removed in community.general 5.0.0.

aliases: no-dev
no_plugins
boolean
    Choices:
  • no ←
  • yes
Disables all plugins ( see --no-plugins ).
Alias no-plugins has been deprecated and will be removed in community.general 5.0.0.

aliases: no-plugins
no_scripts
boolean
    Choices:
  • no ←
  • yes
Skips the execution of all scripts defined in composer.json (see --no-scripts).
Alias no-scripts has been deprecated and will be removed in community.general 5.0.0.

aliases: no-scripts
optimize_autoloader
boolean
    Choices:
  • no
  • yes ←
Optimize autoloader during autoloader dump (see --optimize-autoloader).
Convert PSR-0/4 autoloading to classmap to get a faster autoloader.
Recommended especially for production, but can take a bit of time to run.
Alias optimize-autoloader has been deprecated and will be removed in community.general 5.0.0.

aliases: optimize-autoloader
prefer_dist
boolean
    Choices:
  • no ←
  • yes
Forces installation from package dist even for dev versions (see --prefer-dist).
Alias prefer-dist has been deprecated and will be removed in community.general 5.0.0.

aliases: prefer-dist
prefer_source
boolean
    Choices:
  • no ←
  • yes
Forces installation from package sources when possible (see --prefer-source).
Alias prefer-source has been deprecated and will be removed in community.general 5.0.0.

aliases: prefer-source
working_dir
path
Directory of your project (see --working-dir). This is required when the command is not run globally.
Will be ignored if global_command=true.
Alias working-dir has been deprecated and will be removed in community.general 5.0.0.

aliases: working-dir

Notes

Note

  • Default options that are always appended in each execution are –no-ansi, –no-interaction and –no-progress if available.

  • We received reports about issues on macOS if composer was installed by Homebrew. Please use the official install method to avoid issues.

Examples

- name: Download and installs all libs and dependencies outlined in the /path/to/project/composer.lock
  community.general.composer:
    command: install
    working_dir: /path/to/project

- name: Install a new package
  community.general.composer:
    command: require
    arguments: my/package
    working_dir: /path/to/project

- name: Clone and install a project with all dependencies
  community.general.composer:
    command: create-project
    arguments: package/package /path/to/project ~1.0
    working_dir: /path/to/project
    prefer_dist: yes

- name: Install a package globally
  community.general.composer:
    command: require
    global_command: yes
    arguments: my/package

Authors

  • Dimitrios Tydeas Mengidis (@dmtrs)

  • René Moser (@resmo)