命令行界面 / 命令#

您已经了解了如何使用命令行界面来执行某些操作。本章介绍所有可用的命令。

要从命令行获取帮助,请调用 composercomposer list 以查看完整的命令列表,然后将 --help 与任何这些命令结合使用可以提供更多信息。

由于 Composer 使用了 symfony/console,因此您可以在不引起歧义的情况下使用短名称调用命令。

php composer.phar dump

调用 composer dump-autoload

Bash 自动补全#

要安装 bash 自动补全,您可以运行 composer completion bash > completion.bash。这将在当前目录中创建一个 completion.bash 文件。

然后执行 source completion.bash 以在当前终端会话中启用它。

completion.bash 文件移动并重命名为 /etc/bash_completion.d/composer 以使其在新终端中自动加载。

全局选项#

以下选项适用于每个命令

  • --verbose (-v): 提高消息的详细程度。
  • --help (-h): 显示帮助信息。
  • --quiet (-q): 不输出任何消息。
  • --no-interaction (-n): 不询问任何交互式问题。
  • --no-plugins: 禁用插件。
  • --no-scripts: 跳过执行 composer.json 中定义的脚本。
  • --no-cache: 禁用缓存目录的使用。与将 COMPOSER_CACHE_DIR 环境变量设置为 /dev/null(或 Windows 上的 NUL)相同。
  • --working-dir (-d): 如果指定,则使用给定的目录作为工作目录。
  • --profile: 显示计时和内存使用信息
  • --ansi: 强制使用 ANSI 输出。
  • --no-ansi: 禁用 ANSI 输出。
  • --version (-V): 显示此应用程序版本。

进程退出码#

  • 0: 正常
  • 1: 通用/未知错误码
  • 2: 依赖项解析错误码

init#

章节中,我们了解了如何手动创建 composer.json。还有一个 init 命令可用于执行此操作。

当您运行该命令时,它会交互式地要求您填写字段,同时使用一些智能默认值。

php composer.phar init

选项

  • --name: 包的名称。
  • --description: 包的描述。
  • --author: 包的作者姓名。
  • --type: 包的类型。
  • --homepage: 包的主页。
  • --require: 要使用版本约束要求的包。应采用 foo/bar:1.0.0 的格式。
  • --require-dev: 开发需求,参见 --require
  • --stability (-s): minimum-stability 字段的值。
  • --license (-l): 包的许可证。
  • --repository: 提供一个(或多个)自定义仓库。它们将存储在生成的 composer.json 中,并在提示要求列表时用于自动补全。每个仓库可以是指向 composer 仓库的 HTTP URL,也可以是类似于 repositories 键接受的 JSON 字符串。
  • --autoload (-a): 向 composer.json 添加 PSR-4 自动加载映射。自动将您包的命名空间映射到提供的目录。(期望相对路径,例如 src/)另见 PSR-4 自动加载

install / i#

install 命令从当前目录读取 composer.json 文件,解析依赖项并将它们安装到 vendor 中。

php composer.phar install

如果当前目录中存在 composer.lock 文件,它将使用其中的精确版本,而不是解析它们。这确保了使用该库的每个人都会获得相同版本的依赖项。

如果不存在 composer.lock 文件,Composer 将在依赖项解析后创建一个。

选项

  • --prefer-install: 有两种下载包的方式:sourcedist。Composer 默认使用 dist。如果您传递 --prefer-install=source(或 --prefer-source),Composer 将从 source 安装(如果有)。如果您想对项目进行错误修复并直接获得依赖项的本地 git 克隆,这将很有用。要获得 Composer 自动为包的开发版本使用 source 的传统行为,请使用 --prefer-install=auto。另见 config.preferred-install。传递此标志将覆盖配置值。
  • --dry-run: 如果您想在不实际安装包的情况下运行安装,可以使用 --dry-run。这将模拟安装并向您展示会发生什么。
  • --download-only: 仅下载,不安装包。
  • --dev: 安装列在 require-dev 中的包(这是默认行为)。
  • --no-dev: 跳过安装列在 require-dev 中的包。自动加载器生成会跳过 autoload-dev 规则。另见 COMPOSER_NO_DEV
  • --no-autoloader: 跳过自动加载器生成。
  • --no-progress: 删除进度显示,它可能会干扰某些终端或无法处理退格字符的脚本。
  • --audit: 安装完成后运行审核。
  • --audit-format: 审核输出格式。必须是 "table"、"plain"、"json" 或 "summary"(默认值)。
  • --optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这尤其推荐用于生产环境,但运行起来可能需要一些时间,因此目前默认情况下不会执行此操作。
  • --classmap-authoritative (-a): 仅从类映射中自动加载类。隐式启用 --optimize-autoloader
  • --apcu-autoloader: 使用 APCu 缓存已找到/未找到的类。
  • --apcu-autoloader-prefix: 使用 APCu 自动加载器缓存的自定义前缀。隐式启用 --apcu-autoloader
  • --ignore-platform-reqs: 忽略所有平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足这些要求。另见 platform 配置选项。
  • --ignore-platform-req: 忽略特定平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足它。可以使用通配符忽略多个要求。附加 + 将仅忽略要求的上限。例如,如果一个包要求 php: ^7,那么选项 --ignore-platform-req=php+ 将允许在 PHP 8 上安装,但在 PHP 5.6 上安装仍然会失败。

update / u / upgrade#

为了获得最新版本的依赖项并更新 composer.lock 文件,您应该使用 update 命令。此命令也被称为 upgrade,因为它与您想到的 apt-get 或类似的包管理器中的 upgrade 具有相同的作用。

php composer.phar update

这将解析项目的所有依赖项并将精确的版本写入 composer.lock

如果您只想更新一些包而不是全部,您可以列出它们,如下所示

php composer.phar update vendor/package vendor/package2

您还可以使用通配符一次更新多个包

php composer.phar update "vendor/*"

如果您想将包降级到特定版本而不更改 composer.json,您可以使用 --with 并提供自定义版本约束

php composer.phar update --with vendor/package:2.0.1

请注意,使用上述方法将更新所有包。如果您只想更新使用 --with 提供自定义约束的包,您可以跳过 --with,而是使用带部分更新语法的约束

php composer.phar update vendor/package:2.0.1 vendor/package2:3.0.*

注意:对于也在 composer.json 中需要的包,自定义约束必须是现有约束的子集。composer.json 约束仍然适用,并且 composer.json 不会被这些临时更新约束修改。

选项

  • --prefer-install: 有两种下载包的方式:sourcedist。Composer 默认使用 dist。如果您传递 --prefer-install=source(或 --prefer-source),Composer 将从 source 安装(如果有)。如果您想对项目进行错误修复并直接获得依赖项的本地 git 克隆,这将很有用。要获得 Composer 自动为包的开发版本使用 source 的传统行为,请使用 --prefer-install=auto。另见 config.preferred-install。传递此标志将覆盖配置值。
  • --dry-run: 模拟命令而不实际执行任何操作。
  • --dev: 安装列在 require-dev 中的包(这是默认行为)。
  • --no-dev: 跳过安装列在 require-dev 中的包。自动加载器生成会跳过 autoload-dev 规则。另见 COMPOSER_NO_DEV
  • --no-install: 在更新 composer.lock 文件后不运行安装步骤。
  • --no-audit: 在更新 composer.lock 文件后不运行审核步骤。另见 COMPOSER_NO_AUDIT
  • --audit-format: 审核输出格式。必须是 "table"、"plain"、"json" 或 "summary"(默认值)。
  • --lock: 覆盖锁定文件哈希以抑制关于锁定文件已过时的警告,而不会更新包版本。如果包元数据(如镜像和 URL)发生了更改,它们将被更新。
  • --with: 要添加的临时版本约束,例如 foo/bar:1.0.0 或 foo/bar=1.0.0
  • --no-autoloader: 跳过自动加载器生成。
  • --no-progress: 删除进度显示,它可能会干扰某些终端或无法处理退格字符的脚本。
  • --with-dependencies (-w): 还更新参数列表中包的依赖项,但不包括那些作为根要求的依赖项。
  • --with-all-dependencies (-W): 还更新参数列表中包的依赖项,包括那些作为根要求的依赖项。
  • --optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这尤其推荐用于生产环境,但运行起来可能需要一些时间,因此目前默认情况下不会执行此操作。
  • --classmap-authoritative (-a): 仅从类映射中自动加载类。隐式启用 --optimize-autoloader
  • --apcu-autoloader: 使用 APCu 缓存已找到/未找到的类。
  • --apcu-autoloader-prefix: 使用 APCu 自动加载器缓存的自定义前缀。隐式启用 --apcu-autoloader
  • --ignore-platform-reqs: 忽略所有平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足这些要求。另见 platform 配置选项。
  • --ignore-platform-req: 忽略特定平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足它。可以使用通配符忽略多个要求。附加 + 将仅忽略要求的上限。例如,如果一个包要求 php: ^7,那么选项 --ignore-platform-req=php+ 将允许在 PHP 8 上安装,但在 PHP 5.6 上安装仍然会失败。
  • --prefer-stable: 优先使用依赖项的稳定版本。也可以通过 COMPOSER_PREFER_STABLE=1 环境变量设置。
  • --prefer-lowest: 优先使用依赖项的最低版本。这对于测试最小版本的要求很有用,通常与 --prefer-stable 一起使用。也可以通过 COMPOSER_PREFER_LOWEST=1 环境变量设置。
  • --minimal-changes (-m): 在使用 -w/-W 进行部分更新时,仅对传递依赖项执行绝对必要的更改。也可以通过 COMPOSER_MINIMAL_CHANGES=1 环境变量设置。
  • --interactive: 带有自动补全功能的交互式界面,用于选择要更新的包。
  • --root-reqs: 将更新限制为您的第一层依赖项。

指定 mirrorslocknothing 作为参数与指定 --lock 选项的效果相同,例如 composer update mirrorscomposer update --lock 完全相同。

require / r#

require 命令从当前目录的 composer.json 文件中添加新包。如果不存在文件,则会动态创建。

如果未指定包,Composer 会提示您搜索包,并根据搜索结果提供要包含的匹配项列表。

php composer.phar require

添加或修改依赖项后,会安装或更新修改后的依赖项。

如果不想以交互方式选择依赖项,可以将它们传递给命令。

php composer.phar require "vendor/package:2.*" vendor/package2:dev-master

如果未指定版本约束,Composer 会根据可用的包版本选择合适的版本。

php composer.phar require vendor/package vendor/package2

如果不想立即安装新的依赖项,可以使用 --no-update 命令。

选项

  • --dev: 将包添加到 require-dev 中。
  • --dry-run: 模拟命令而不实际执行任何操作。
  • --prefer-install: 有两种下载包的方式:sourcedist。Composer 默认使用 dist。如果您传递 --prefer-install=source(或 --prefer-source),Composer 将从 source 安装(如果有)。如果您想对项目进行错误修复并直接获得依赖项的本地 git 克隆,这将很有用。要获得 Composer 自动为包的开发版本使用 source 的传统行为,请使用 --prefer-install=auto。另见 config.preferred-install。传递此标志将覆盖配置值。
  • --no-progress: 删除进度显示,它可能会干扰某些终端或无法处理退格字符的脚本。
  • --no-update: 禁用自动更新依赖项(隐含 --no-install)。
  • --no-install: 在更新 composer.lock 文件后不运行安装步骤。
  • --no-audit: 在更新 composer.lock 文件后不运行审核步骤。另见 COMPOSER_NO_AUDIT
  • --audit-format: 审核输出格式。必须是 "table"、"plain"、"json" 或 "summary"(默认值)。
  • --update-no-dev: 使用 --no-dev 选项运行依赖项更新。另请参见 COMPOSER_NO_DEV
  • --update-with-dependencies (-w): 还会更新新依赖项的依赖项,但根依赖项除外。
  • --update-with-all-dependencies (-W): 还会更新新依赖项的依赖项,包括根依赖项。
  • --ignore-platform-reqs: 忽略所有平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足这些要求。另见 platform 配置选项。
  • --ignore-platform-req: 忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。可以使用通配符忽略多个要求。
  • --prefer-stable: 优先使用依赖项的稳定版本。也可以通过 COMPOSER_PREFER_STABLE=1 环境变量设置。
  • --prefer-lowest: 优先使用依赖项的最低版本。这对于测试最小版本的要求很有用,通常与 --prefer-stable 一起使用。也可以通过 COMPOSER_PREFER_LOWEST=1 环境变量设置。
  • --minimal-changes (-m): 在使用 -w/-W 进行更新时,仅对传递依赖项进行绝对必要的更改。也可以通过 COMPOSER_MINIMAL_CHANGES=1 环境变量设置。
  • --sort-packages: 保持 composer.json 中的包排序。
  • --optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这尤其推荐用于生产环境,但运行起来可能需要一些时间,因此目前默认情况下不会执行此操作。
  • --classmap-authoritative (-a): 仅从类映射中自动加载类。隐式启用 --optimize-autoloader
  • --apcu-autoloader: 使用 APCu 缓存已找到/未找到的类。
  • --apcu-autoloader-prefix: 使用 APCu 自动加载器缓存的自定义前缀。隐式启用 --apcu-autoloader

remove / rm / uninstall#

remove 命令从当前目录的 composer.json 文件中删除包。

php composer.phar remove vendor/package vendor/package2

删除依赖项后,会卸载修改后的依赖项。

选项

  • --unused 删除不再是直接或间接依赖项(任何更多)的未使用的包。
  • --dev:require-dev 中删除包。
  • --dry-run: 模拟命令而不实际执行任何操作。
  • --no-progress: 删除进度显示,它可能会干扰某些终端或无法处理退格字符的脚本。
  • --no-update: 禁用自动更新依赖项(隐含 --no-install)。
  • --no-install: 在更新 composer.lock 文件后不运行安装步骤。
  • --no-audit: 在安装完成后不运行审计步骤。另请参见 COMPOSER_NO_AUDIT
  • --audit-format: 审核输出格式。必须是 "table"、"plain"、"json" 或 "summary"(默认值)。
  • --update-no-dev: 使用 --no-dev 选项运行依赖项更新。另请参见 COMPOSER_NO_DEV
  • --update-with-dependencies (-w): 还会更新已删除包的依赖项。(已弃用,现在是默认行为)。
  • --update-with-all-dependencies (-W): 允许更新所有继承的依赖项,包括根依赖项。
  • --minimal-changes (-m): 在使用 -w/-W 进行更新时,仅对传递依赖项进行绝对必要的更改。也可以通过 COMPOSER_MINIMAL_CHANGES=1 环境变量设置。
  • --ignore-platform-reqs: 忽略所有平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足这些要求。另见 platform 配置选项。
  • --ignore-platform-req: 忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。可以使用通配符忽略多个要求。
  • --optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这尤其推荐用于生产环境,但运行起来可能需要一些时间,因此目前默认情况下不会执行此操作。
  • --classmap-authoritative (-a): 仅从类映射中自动加载类。隐式启用 --optimize-autoloader
  • --apcu-autoloader: 使用 APCu 缓存已找到/未找到的类。
  • --apcu-autoloader-prefix: 使用 APCu 自动加载器缓存的自定义前缀。隐式启用 --apcu-autoloader

bump#

bump 命令将 composer.json 依赖项的下限提高到当前安装的版本。这有助于确保您的依赖项不会因其他冲突而意外降级,并且可以稍微提高依赖项解析性能,因为它限制了 Composer 需要查看的包版本数量。

在库上盲目运行此命令不推荐,因为它会缩小您的允许依赖项范围,这可能会导致您的用户遇到依赖项冲突。但是,在库上使用 --dev-only 运行此命令可能没问题,因为开发依赖项是针对库的本地依赖项,不会影响包的使用者。

选项

  • --dev-only: 仅调整 "require-dev" 中的依赖项。
  • --no-dev-only: 仅调整 "require" 中的依赖项。
  • --dry-run: 输出要调整的包,但不会执行任何操作。

reinstall#

reinstall 命令通过名称查找已安装的包,卸载它们,然后重新安装它们。如果您弄乱了包的文件,或者想使用 --prefer-install 更改安装类型,可以使用此命令对包进行全新安装。

php composer.phar reinstall acme/foo acme/bar

您可以指定多个包名称来重新安装,或使用通配符一次选择多个包。

php composer.phar reinstall "acme/*"

选项

  • --prefer-install: 有两种下载包的方式:sourcedist。Composer 默认使用 dist。如果您传递 --prefer-install=source(或 --prefer-source),Composer 将从 source 安装(如果有)。如果您想对项目进行错误修复并直接获得依赖项的本地 git 克隆,这将很有用。要获得 Composer 自动为包的开发版本使用 source 的传统行为,请使用 --prefer-install=auto。另见 config.preferred-install。传递此标志将覆盖配置值。
  • --no-autoloader: 跳过自动加载器生成。
  • --no-progress: 删除进度显示,它可能会干扰某些终端或无法处理退格字符的脚本。
  • --optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这尤其推荐用于生产环境,但运行起来可能需要一些时间,因此目前默认情况下不会执行此操作。
  • --classmap-authoritative (-a): 仅从类映射中自动加载类。隐式启用 --optimize-autoloader
  • --apcu-autoloader: 使用 APCu 缓存已找到/未找到的类。
  • --apcu-autoloader-prefix: 使用 APCu 自动加载器缓存的自定义前缀。隐式启用 --apcu-autoloader
  • --ignore-platform-reqs: 忽略所有平台要求。这仅在为重新安装命令生成自动加载程序的上下文中有效。
  • --ignore-platform-req: 忽略特定的平台要求。这仅在为重新安装命令生成自动加载程序的上下文中有效。可以使用通配符忽略多个要求。

check-platform-reqs#

check-platform-reqs 命令检查您的 PHP 和扩展版本是否与已安装包的平台要求匹配。例如,可以使用此命令验证生产服务器在安装项目后是否具有运行项目所需的所有扩展。

与 update/install 不同,此命令会忽略 config.platform 设置并检查实际平台包,因此您可以确信拥有所需的平台依赖项。

选项

  • --lock: 仅从锁定文件检查依赖项,而不是从已安装的包检查。
  • --no-dev: 禁用检查 require-dev 包的要求。
  • --format (-f): 输出格式:文本(默认)或 json。

global#

global 命令允许您运行其他命令(如 installremoverequireupdate),就像您从 COMPOSER_HOME 目录中运行它们一样。

这只是一个辅助工具,用于管理存储在中央位置的项目,该项目可以保存您希望在任何地方都能使用 CLI 工具或 Composer 插件。

这可以用于全局安装 CLI 实用程序。以下是一个示例

php composer.phar global require friendsofphp/php-cs-fixer

现在,php-cs-fixer 二进制文件可以在全局范围内使用。请确保您的全局 vendor 二进制文件 目录位于您的 $PATH 环境变量中,可以使用以下命令获取其位置

php composer.phar global config bin-dir --absolute

如果以后要更新二进制文件,可以运行全局更新

php composer.phar global update

search 命令允许您搜索当前项目的包存储库。通常,这将是 packagist。您需要传递要搜索的关键词。

php composer.phar search monolog

您还可以通过传递多个参数来搜索多个关键词。

选项

  • --only-name (-N): 仅在包名称中搜索。
  • --only-vendor (-O): 仅搜索供应商/组织名称,仅返回 "vendor" 作为结果。
  • --type (-t): 搜索特定类型的包。
  • --format (-f): 允许您在文本(默认)或 json 输出格式之间进行选择。请注意,在 json 中,只有 name 和 description 键是保证存在的。其余部分(urlrepositorydownloadsfavers)可用于 Packagist.org 搜索结果,其他存储库可能会返回更多或更少的数据。

show / info#

要列出所有可用的包,可以使用 show 命令。

php composer.phar show

要筛选列表,可以使用通配符传递包掩码。

php composer.phar show "monolog/*"
monolog/monolog 2.4.0 Sends your logs to files, sockets, inboxes, databases and various web services

如果要查看特定包的详细信息,可以传递包名称。

php composer.phar show monolog/monolog
name     : monolog/monolog
descrip. : Sends your logs to files, sockets, inboxes, databases and various web services
keywords : log, logging, psr-3
versions : * 1.27.1
type     : library
license  : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : http://github.com/Seldaek/monolog
source   : [git] https://github.com/Seldaek/monolog.git 904713c5929655dc9b97288b69cfeedad610c9a1
dist     : [zip] https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1 904713c5929655dc9b97288b69cfeedad610c9a1
names    : monolog/monolog, psr/log-implementation

support
issues : https://github.com/Seldaek/monolog/issues
source : https://github.com/Seldaek/monolog/tree/1.27.1

autoload
psr-4
Monolog\ => src/Monolog

requires
php >=5.3.0
psr/log ~1.0

您甚至可以传递包版本,这将告诉您该特定版本的详细信息。

php composer.phar show monolog/monolog 1.0.2

选项

  • --all: 列出所有存储库中可用的所有包。
  • --installed (-i): 列出已安装的包(这是默认启用的,并且已弃用)。
  • --locked: 列出 composer.lock 中的锁定包。
  • --platform (-p): 仅列出平台包(php 和扩展)。
  • --available (-a): 仅列出可用的包。
  • --self (-s): 列出根包信息。
  • --name-only (-N): 仅列出包名称。
  • --path (-P): 列出包路径。
  • --tree (-t): 将您的依赖项列为树形结构。如果传递包名称,它将显示该包的依赖项树。
  • --latest (-l): 列出所有已安装的包,包括它们的最新版本。
  • --outdated (-o): 隐含 --latest,但仅列出有更新版本的包。
  • --ignore: 忽略指定的包。可以包含通配符 (*)。如果不想收到有关某些包的新版本的信息,可以将其与 --outdated 选项一起使用。
  • --no-dev: 从包列表中筛选出开发依赖项。
  • --major-only (-M): 与 --latest 或 --outdated 一起使用。仅显示具有主要 SemVer 兼容更新的包。
  • --minor-only (-m): 与 --latest 或 --outdated 一起使用。仅显示具有次要 SemVer 兼容更新的包。
  • --patch-only: 与 --latest 或 --outdated 一起使用。仅显示具有补丁级 SemVer 兼容更新的包。
  • --sort-by-age (-A): 显示已安装版本的年龄,并按最旧的包排序。与 --latest 或 --outdated 选项一起使用。
  • --direct (-D): 将包列表限制为您的直接依赖项。
  • --strict: 如果有过期包,则返回非零退出代码。
  • --format (-f): 允许您在文本(默认)或 json 输出格式之间进行选择。
  • --ignore-platform-reqs: 忽略所有平台要求 (phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。与 --outdated 选项一起使用。
  • --ignore-platform-req: 忽略特定的平台要求 (phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。可以使用通配符忽略多个要求。与 --outdated 选项一起使用。

outdated#

outdated 命令显示已安装包的列表,其中这些包有更新可用,包括其当前版本和最新版本。这基本上是 composer show -lo 的别名。

颜色编码如下所示

  • 绿色 (=):依赖项处于最新版本,并且已更新。
  • 黄色 (~):依赖项有一个新的版本可用,根据 semver,该版本包括向后兼容性中断,因此您可以在可以升级时升级,但这可能需要一些工作。
  • 红色 (!):依赖项有一个新的版本,该版本与 semver 兼容,您应该升级它。

选项

  • --all (-a): 显示所有包,而不仅仅是过期的包(等同于 composer show --latest)。
  • --direct (-D): 将包列表限制为您的直接依赖项。
  • --strict: 如果任何包已过期,则返回非零退出代码。
  • --ignore: 忽略指定的包。可以包含通配符 (*)。如果不想收到有关某些包的新版本的信息,可以使用此选项。
  • --major-only (-M): 仅显示具有主要 SemVer 兼容更新的包。
  • --minor-only (-m): 仅显示具有次要 SemVer 兼容更新的包。
  • --patch-only (-p): 仅显示具有补丁级 SemVer 兼容更新的包。
  • --sort-by-age (-A): 显示已安装版本的年龄,并按最旧的包排序。
  • --format (-f): 允许您在文本(默认)或 json 输出格式之间进行选择。
  • --no-dev: 不要显示过期的开发依赖项。
  • --locked: 显示锁定文件中包的更新,而不管 vendor 目录中当前的内容是什么。
  • --ignore-platform-reqs: 忽略所有平台要求 (phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。
  • --ignore-platform-req: 忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。可以使用通配符忽略多个要求。

browse / home#

browse 命令(别名为 home)在您的浏览器中打开包的仓库 URL 或主页。

选项

  • --homepage (-H): 打开主页而不是仓库 URL。
  • --show (-s): 仅显示主页或仓库 URL。

suggests#

列出当前安装的包集建议的所有包。您可以选择以 vendor/package 的格式传递一个或多个包名称,以将输出限制为仅由这些包提供的建议。

使用 --by-package(默认)或 --by-suggestion 标志分别按提供建议的包或建议的包对输出进行分组。

如果您只需要一个建议的包名称列表,请使用 --list

选项

  • --by-package: 按建议的包对输出进行分组(默认)。
  • --by-suggestion: 按建议的包对输出进行分组。
  • --all: 显示来自所有依赖项的建议,包括传递依赖项(默认情况下,只显示直接依赖项的建议)。
  • --list: 仅显示建议的包名称列表。
  • --no-dev: 排除来自 require-dev 包的建议。

fund#

了解如何帮助为您的依赖项维护提供资金。这列出了所有安装依赖项的资金链接。使用 --format=json 获取机器可读的输出。

选项

  • --format (-f): 允许您在文本(默认)或 json 输出格式之间进行选择。

depends / why#

depends 命令告诉您哪些其他包依赖于某个特定包。与安装一样,require-dev 关系只针对根包考虑。

php composer.phar depends doctrine/lexer
doctrine/annotations  1.13.3 requires doctrine/lexer (1.*)
doctrine/common       2.13.3 requires doctrine/lexer (^1.0)

您可以选择在包之后指定版本约束以限制搜索。

添加 --tree-t 标志以显示包依赖关系的递归树,例如

php composer.phar depends psr/log -t
psr/log 1.1.4 Common interface for logging libraries
├──composer/composer 2.4.x-dev (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/composer dev-main (requires psr/log ^1.0 || ^2.0 || ^3.0)
├──composer/xdebug-handler 3.0.3 (requires psr/log ^1 || ^2 || ^3)
│  ├──composer/composer 2.4.x-dev (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
│  └──composer/composer dev-main (requires composer/xdebug-handler ^2.0.2 || ^3.0.3)
└──symfony/console v5.4.11 (conflicts psr/log >=3) (circular dependency aborted here)

选项

  • --recursive (-r): 递归地解析到根包。
  • --tree (-t): 以嵌套树的形式打印结果,暗示 -r。

prohibits / why-not#

prohibits 命令告诉您哪些包阻止安装给定包。指定版本约束以验证是否可以在您的项目中执行升级,以及如果不能执行,原因是什么。请参见以下示例

php composer.phar prohibits symfony/symfony 3.1
laravel/framework v5.2.16 requires symfony/var-dumper (2.8.*|3.0.*)

请注意,您还可以指定平台要求,例如,检查是否可以将服务器升级到 PHP 8.0。

php composer.phar prohibits php 8
doctrine/cache        v1.6.0 requires php (~5.5|~7.0)
doctrine/common       v2.6.1 requires php (~5.5|~7.0)
doctrine/instantiator 1.0.5  requires php (>=5.3,<8.0-DEV)

depends 一样,您可以请求递归查找,这将列出所有依赖于导致冲突的包的包。

选项

  • --recursive (-r): 递归地解析到根包。
  • --tree (-t): 以嵌套树的形式打印结果,暗示 -r。

validate#

您应该始终在提交 composer.json 文件之前以及在标记版本之前运行 validate 命令。它将检查您的 composer.json 是否有效。

php composer.phar validate

选项

  • --no-check-all: 如果 composer.json 中的要求使用无界或过于严格的版本约束,则不会发出警告。
  • --no-check-lock: 如果 composer.lock 存在且不是最新的,则不会发出错误。
  • --no-check-publish: 如果 composer.json 不适合作为包发布到 Packagist,但本身有效,则不会发出错误。
  • --with-dependencies: 还验证所有安装依赖项的 composer.json。
  • --strict: 对于警告和错误都返回非零退出代码。

status#

如果您经常需要修改依赖项的代码,并且它们是从源代码安装的,则 status 命令允许您检查其中任何一个是否存在本地更改。

php composer.phar status

使用 --verbose 选项,您可以获得有关更改内容的更多信息

php composer.phar status -v
You have changes in the following dependencies:
vendor/seld/jsonlint:
    M README.mdown

self-update / selfupdate#

要将 Composer 本身更新到最新版本,请运行 self-update 命令。它将用最新版本替换您的 composer.phar

php composer.phar self-update

如果您想改为更新到特定版本,请指定它

php composer.phar self-update 2.4.0-RC1

如果您已为整个系统安装 Composer(请参见 全局安装),您可能需要使用 root 权限运行命令

sudo -H composer self-update

如果 Composer 不是作为 PHAR 安装的,则此命令不可用。(当 Composer 由操作系统包管理器安装时,有时会发生这种情况。)

选项

  • --rollback (-r): 回滚到您安装的最后一个版本。
  • --clean-backups: 在更新期间删除旧备份。这将使 Composer 的当前版本成为更新后唯一可用的备份。
  • --no-progress: 不要输出下载进度。
  • --update-keys: 提示用户更新密钥。
  • --stable: 强制更新到稳定频道。
  • --preview: 强制更新到预览频道。
  • --snapshot: 强制更新到快照频道。
  • --1: 强制更新到稳定频道,但仅使用 1.x 版本
  • --2: 强制更新到稳定频道,但仅使用 2.x 版本
  • --set-channel-only: 仅将频道存储为默认频道,然后退出

config#

config 命令允许您编辑 Composer 配置设置和存储库,无论是在本地 composer.json 文件中还是在全局 config.json 文件中。

此外,它还允许您编辑本地 composer.json 中的大多数属性。

php composer.phar config --list

Usage#

config [options] [setting-key] [setting-value1] ... [setting-valueN]

setting-key 是一个配置选项名称,setting-value1 是一个配置值。对于可以采用值数组的设置(例如 github-protocols),允许使用多个 setting-value 参数。

您还可以编辑以下属性的值

descriptionhomepagekeywordslicenseminimum-stabilitynameprefer-stabletypeversion

有关有效配置选项,请参见 Config 章。

选项

  • --global (-g): 在默认情况下位于 $COMPOSER_HOME/config.json 的全局配置文件上运行。如果没有此选项,此命令将影响本地 composer.json 文件或由 --file 指定的文件。
  • --editor (-e): 使用 EDITOR 环境变量中定义的文本编辑器打开本地 composer.json 文件。使用 --global 选项时,这将打开全局配置文件。
  • --auth (-a): 影响身份验证配置文件(仅用于 --editor)。
  • --unset: 删除由 setting-key 命名的配置元素。
  • --list (-l): 显示当前配置变量列表。使用 --global 选项时,这将仅列出全局配置。
  • --file="..." (-f): 在特定文件而不是 composer.json 上运行。请注意,这不能与 --global 选项一起使用。
  • --absolute: 在获取 *-dir 配置值时返回绝对路径而不是相对路径。
  • --json: JSON 解码设置值,用于 extra.* 密钥。
  • --merge: 将设置值与当前值合并,用于 extra.* 密钥与 --json 结合使用。
  • --append: 添加存储库时,将它追加到(最低优先级)现有存储库,而不是预先追加到(最高优先级)现有存储库。
  • --source: 显示加载配置值的来源。

修改存储库#

除了修改配置部分之外,config 命令还支持通过以下方式对存储库部分进行更改

php composer.phar config repositories.foo vcs https://github.com/foo/bar

如果您的存储库需要更多配置选项,您可以改为传递其 JSON 表示

php composer.phar config repositories.foo '{"type": "vcs", "url": "http://svn.example.org/my-project/", "trunk-path": "master"}'

修改额外值#

除了修改配置部分之外,config 命令还支持通过以下方式对额外部分进行更改

php composer.phar config extra.foo.bar value

点表示数组嵌套,虽然允许最大深度为 3 级。上面将设置 "extra": { "foo": { "bar": "value" } }

如果您要添加/修改复杂值,可以使用 --json--merge 标志以 JSON 格式编辑额外字段

php composer.phar config --json extra.foo.bar '{"baz": true, "qux": []}'

create-project#

您可以使用 Composer 从现有包创建新项目。这相当于执行 git 克隆/svn 检查,然后安装供应商的 composer install

这有几个应用

  1. 您可以部署应用程序包。
  2. 您可以签出任何包并开始开发补丁,例如。
  3. 具有多个开发人员的项目可以使用此功能来引导初始应用程序以供开发。

要使用 Composer 创建新项目,可以使用 create-project 命令。传递一个包名称和要创建项目的目录。您还可以提供版本作为第三个参数,否则将使用最新版本。

如果目录当前不存在,它将在安装过程中创建。

php composer.phar create-project doctrine/orm path "2.2.*"

也可以在具有现有 composer.json 文件的目录中不带参数运行命令,以引导项目。

默认情况下,命令检查 packagist.org 上的包。

选项

  • --stability (-s): 包的最低稳定性。默认为 stable
  • --prefer-install: 有两种下载包的方式:sourcedist。Composer 默认使用 dist。如果您传递 --prefer-install=source(或 --prefer-source),Composer 将从 source 安装(如果有)。如果您想对项目进行错误修复并直接获得依赖项的本地 git 克隆,这将很有用。要获得 Composer 自动为包的开发版本使用 source 的传统行为,请使用 --prefer-install=auto。另见 config.preferred-install。传递此标志将覆盖配置值。
  • --repository: 提供一个自定义存储库来搜索包,该存储库将用作 packagist 的替代。可以是指向 composer 存储库的 HTTP URL、指向本地 packages.json 文件的路径,或者与 repositories 密钥接受的内容类似的 JSON 字符串。您可以多次使用它来配置多个存储库。
  • --add-repository: 在 composer.json 中添加自定义存储库。如果存在锁文件,它将被删除,并且将运行更新而不是安装。
  • --dev: 安装 require-dev 中列出的包。
  • --no-dev: 禁用安装 require-dev 包。
  • --no-scripts: 禁用在根包中定义的脚本的执行。
  • --no-progress: 删除进度显示,它可能会干扰某些终端或无法处理退格字符的脚本。
  • --no-secure-http: 在安装根包时临时禁用 secure-http 配置选项。自担风险使用。使用此标志不是好主意。
  • --keep-vcs: 跳过为创建的项目删除 VCS 元数据。这主要在您在非交互模式下运行命令时很有用。
  • --remove-vcs: 强制删除 VCS 元数据,无需提示。
  • --no-install: 禁用供应商的安装。
  • --no-audit: 在安装完成后不运行审计步骤。另请参见 COMPOSER_NO_AUDIT
  • --audit-format: 审核输出格式。必须是 "table"、"plain"、"json" 或 "summary"(默认值)。
  • --ignore-platform-reqs: 忽略所有平台要求(phphhvmlib-*ext-*)并强制安装,即使本地机器没有满足这些要求。另见 platform 配置选项。
  • --ignore-platform-req: 忽略特定的平台要求(phphhvmlib-*ext-*),即使本地机器不满足这些要求,也强制安装。可以使用通配符忽略多个要求。
  • --ask: 要求用户为新项目提供目标目录。

dump-autoload / dumpautoload#

如果您需要更新自动加载器,例如由于类映射包中的新类,您可以使用 dump-autoload 来完成此操作,而无需执行安装或更新。

此外,它可以转储优化的自动加载器,该加载器将 PSR-0/4 包转换为类映射包,以提高性能。在具有许多类的大型应用程序中,自动加载器可能占用每个请求时间的重要部分。对所有内容使用类映射在开发中不太方便,但使用此选项,您仍然可以使用 PSR-0/4 来获得便利性,而使用类映射来获得性能。

选项

  • --optimize (-o): 将 PSR-0/4 自动加载转换为类映射以获得更快的自动加载器。这尤其推荐用于生产,但可能需要一些时间才能运行,因此目前默认情况下不会执行。
  • --classmap-authoritative (-a): 仅从类映射中自动加载类。隐式启用 --optimize
  • --apcu: 使用 APCu 缓存已找到/未找到的类。
  • --apcu-prefix: 使用自定义前缀来指定 APCu 自动加载器缓存。隐式启用 --apcu
  • --no-dev: 禁用 autoload-dev 规则。Composer 默认情况下将根据最后一次 installupdate--no-dev 状态自动推断这一点。
  • --dev: 启用 autoload-dev 规则。Composer 默认情况下将根据最后一次 installupdate--no-dev 状态自动推断这一点。
  • --ignore-platform-reqs: 忽略所有 phphhvmlib-*ext-* 要求,并跳过这些的 平台检查。另请参见 platform 配置选项。
  • --ignore-platform-req: 忽略特定的平台要求(phphhvmlib-*ext-*),并跳过针对该要求的 平台检查。多个要求可以通过通配符进行忽略。
  • --strict-psr: 如果存在 PSR-4 或 PSR-0 映射错误,则返回失败退出代码 (1)。需要 --optimize 才能生效。

clear-cache / clearcache / cc#

删除 Composer 缓存目录中的所有内容。

选项

  • --gc: 只运行垃圾回收,不进行完整的缓存清除

licenses#

列出所有已安装软件包的名称、版本和许可证。使用 --format=json 获取机器可读的输出。

选项

  • --format: 输出格式:text、json 或 summary(默认: "text")
  • --no-dev: 从输出中移除开发依赖项

run-script / run#

选项

  • --timeout: 设置脚本超时时间(以秒为单位),或设置为 0 表示无超时。
  • --dev: 设置开发模式。
  • --no-dev: 禁用开发模式。
  • --list (-l): 列出用户定义的脚本。

要手动运行 脚本,可以使用此命令,提供脚本名称以及可选的任何必要参数。

exec#

执行一个已引入的二进制文件/脚本。你可以执行任何命令,这将确保 Composer bin-dir 在命令运行之前被添加到 PATH 中。

选项

  • --list (-l): 列出可用的 Composer 二进制文件。

diagnose#

如果你认为你发现了错误,或者某些东西的行为很奇怪,你可能想要运行 diagnose 命令来执行许多常见问题的自动检查。

php composer.phar diagnose

archive#

此命令用于为给定版本的给定软件包生成 zip/tar 归档文件。它也可以用于归档整个项目,而不包括/忽略文件。

php composer.phar archive vendor/package 2.0.21 --format=zip

选项

  • --format (-f): 生成的归档文件的格式:tar、tar.gz、tar.bz2 或 zip(默认: "tar")。
  • --dir: 将归档文件写入此目录(默认: ".")。
  • --file: 使用给定的文件名写入归档文件。

audit#

此命令用于审计你已安装的软件包,以查找可能的安全性问题。它根据 Packagist.org api 检查并列出安全漏洞公告。

audit 命令返回找到的漏洞数量。如果成功,则返回 0,否则返回不超过 255 的值。

php composer.phar audit

选项

  • --no-dev: 禁用对 require-dev 包的审计。
  • --format (-f): 审计输出格式。必须是 "table"(默认)、"plain"、"json" 或 "summary"。
  • --locked: 审计锁定文件中的包,无论当前 vendor 目录中是否有。

help#

要获取有关特定命令的更多信息,可以使用 help

php composer.phar help install

命令行自动完成#

可以通过遵循 此页面 上的说明来启用命令行自动完成。

环境变量#

你可以设置一些环境变量来覆盖某些设置。在可能的情况下,建议在 composer.jsonconfig 部分中指定这些设置。值得注意的是,env 变量始终优先于 composer.json 中指定的 value。

COMPOSER#

通过设置 COMPOSER 环境变量,可以将 composer.json 的文件名设置为其他名称。

例如

COMPOSER=composer-other.json php composer.phar install

生成的锁定文件将使用相同的名称:在本例中为 composer-other.lock

COMPOSER_ALLOW_SUPERUSER#

如果设置为 1,此 env 将禁用有关以 root/超级用户身份运行命令的警告。它还会禁用自动清除 sudo 会话,因此你应该只在始终以超级用户身份使用 Composer 时(例如在 Docker 容器中)设置此选项。

COMPOSER_ALLOW_XDEBUG#

如果设置为 1,此 env 允许在启用 Xdebug 扩展的情况下运行 Composer,而无需在没有 Xdebug 的情况下重新启动 PHP。

COMPOSER_AUTH#

COMPOSER_AUTH 变量允许你将身份验证设置为环境变量。变量的内容应为 JSON 格式的对象,包含 http-basic、github-oauth、bitbucket-oauth、... 对象(根据需要),并遵循 来自 config 的规范

COMPOSER_BIN_DIR#

通过设置此选项,你可以将 bin (Vendor Binaries) 目录更改为除 vendor/bin 之外的其他目录。

COMPOSER_CACHE_DIR#

COMPOSER_CACHE_DIR 变量允许你更改 Composer 缓存目录,也可以通过 cache-dir 选项进行配置。

默认情况下,它指向 Windows 上的 C:\Users\<user>\AppData\Local\Composer(或 %LOCALAPPDATA%/Composer)。在遵循 XDG Base Directory Specifications 的 *nix 系统上,它指向 $XDG_CACHE_HOME/composer。在其他 *nix 系统和 macOS 上,它指向 $COMPOSER_HOME/cache

COMPOSER_CAFILE#

通过设置此环境变量,你可以设置一个指向证书捆绑包文件的路径,该文件将在 SSL/TLS 对等方验证期间使用。

COMPOSER_DISABLE_XDEBUG_WARN#

如果设置为 1,此 env 将抑制 Composer 在启用 Xdebug 扩展的情况下运行时的警告。

COMPOSER_DISCARD_CHANGES#

此 env 变量控制 discard-changes 配置选项。

COMPOSER_FUND#

如果设置为 0,此 env 将抑制安装时出现的资金通知。

COMPOSER_HOME#

COMPOSER_HOME 变量允许你更改 Composer 主目录。这是一个隐藏的、全局的(在机器上每个用户都一样)目录,所有项目共享该目录。

使用 composer config --global home 查看主目录的位置。

默认情况下,它指向 Windows 上的 C:\Users\<user>\AppData\Roaming\Composer 和 macOS 上的 /Users/<user>/.composer。在遵循 XDG Base Directory Specifications 的 *nix 系统上,它指向 $XDG_CONFIG_HOME/composer。在其他 *nix 系统上,它指向 /home/<user>/.composer

COMPOSER_HOME/config.json#

你可以在 COMPOSER_HOME 指向的位置放置一个 config.json 文件。当你运行 installupdate 命令时,Composer 将部分地(仅 configrepositories 键)将此配置与你项目的 composer.json 合并。

此文件允许你为用户的项目设置 存储库配置

如果全局配置与本地配置匹配,则项目 composer.json 中的本地配置始终优先。

COMPOSER_HTACCESS_PROTECT#

默认值为 1。如果设置为 0,Composer 不会在 Composer 主目录、缓存目录和数据目录中创建 .htaccess 文件。

COMPOSER_MEMORY_LIMIT#

如果设置,则该 value 将用作 php 的 memory_limit。

COMPOSER_MIRROR_PATH_REPOS#

如果设置为 1,此 env 将默认路径存储库策略更改为 mirror 而不是 symlink。由于它是设置的默认策略,因此它仍然可以通过存储库选项覆盖。

COMPOSER_NO_INTERACTION#

如果设置为 1,此 env 变量将使 Composer 的行为就像你将 --no-interaction 标志传递给每个命令一样。这可以在构建盒/CI 上设置。

COMPOSER_PROCESS_TIMEOUT#

此 env 变量控制 Composer 等待命令(如 git 命令)完成执行的时间。默认值为 300 秒(5 分钟)。

COMPOSER_ROOT_VERSION#

通过设置此变量,你可以指定根包的版本,如果无法从 VCS 信息中推断出来,并且 composer.json 中也不存在。

COMPOSER_VENDOR_DIR#

通过设置此变量,你可以使 Composer 将依赖项安装到除 vendor 之外的其他目录中。

COMPOSER_RUNTIME_ENV#

这允许你提示 Composer 在哪个环境下运行,这可以帮助 Composer 绕过一些特定于环境的问题。目前唯一支持的 value 是 virtualbox,这将启用一些简短的 sleep() 调用,以等待文件系统正确写入文件,然后我们才会尝试读取它们。如果你使用 Vagrant 或 VirtualBox 并遇到安装过程中找不到文件的问题(即使文件应该存在),你可以设置此环境变量。

http_proxy 或 HTTP_PROXY#

HTTP_PROXY_REQUEST_FULLURI#

HTTPS_PROXY_REQUEST_FULLURI#

no_proxy 或 NO_PROXY#

有关如何使用代理环境变量的更多详细信息,请参阅 代理文档

COMPOSER_AUDIT_ABANDONED#

设置为 ignorereportfail 来覆盖 audit.abandoned 配置选项。

COMPOSER_MAX_PARALLEL_HTTP#

设置为整数以配置可以并行下载多少个文件。默认值为 12,必须介于 1 和 50 之间。如果你的代理在并发性方面存在问题,你可能需要降低此值。提高它通常不会带来性能提升。

COMPOSER_IPRESOLVE#

设置为 46 以强制使用 IPv4 或 IPv6 DNS 解析。这仅在使用 curl 扩展进行下载时有效。

COMPOSER_SELF_UPDATE_TARGET#

如果设置,将使 self-update 命令将新的 Composer phar 文件写入该路径,而不是覆盖自身。这对于在只读文件系统上更新 Composer 很有用。

COMPOSER_DISABLE_NETWORK#

如果设置为 1,将禁用网络访问(尽力而为)。这可用于调试或在网络连接不好的飞机或宇宙飞船上运行 Composer。

如果设置为 prime,GitHub VCS 存储库将为缓存填充数据,以便它可以与 1 一起完全离线使用。

COMPOSER_DEBUG_EVENTS#

如果设置为 1,将输出有关正在分派的事件的信息,这对于插件作者识别何时触发以及触发什么事件很有用。

COMPOSER_NO_AUDIT#

如果设置为 1,则等效于将 --no-audit 选项传递给 requireupdateremovecreate-project 命令。

COMPOSER_NO_DEV#

如果设置为1,则等同于将--update-no-dev选项传递给require,或将--no-dev选项传递给installupdate。您可以通过设置COMPOSER_NO_DEV=0来覆盖单个命令的此设置。

COMPOSER_PREFER_STABLE#

如果设置为1,则等同于将--prefer-stable选项传递给updaterequire

COMPOSER_PREFER_LOWEST#

如果设置为1,则等同于将--prefer-lowest选项传递给updaterequire

COMPOSER_MINIMAL_CHANGES#

如果设置为1,则等同于将--minimal-changes选项传递给updaterequireremove

COMPOSER_IGNORE_PLATFORM_REQ 或 COMPOSER_IGNORE_PLATFORM_REQS#

如果COMPOSER_IGNORE_PLATFORM_REQS设置为1,则等同于传递--ignore-platform-reqs参数。否则,在COMPOSER_IGNORE_PLATFORM_REQ中指定一个用逗号分隔的列表将忽略这些特定要求。

例如,如果开发工作站永远不会运行数据库查询,则可以使用此方法来忽略对数据库扩展可用的要求。如果设置COMPOSER_IGNORE_PLATFORM_REQ=ext-oci8,则composer将允许安装包,即使oci8 PHP扩展未启用。

| 架构

发现错别字?文档中有错误? 分叉并编辑它!