VPN技术 · 2023年11月10日 0

composer命令:下载软件包

使用 composer 命令下载软件包

全局参数

以下参数可与每个命令结合使用:

  • -verbose (-v): 增加输出信息的详细程度。
    • -v 表示正常输出。
    • -vv 表示更详细的输出。
    • -vvv 则用于调试。
  • -help (-h): 显示帮助信息。
  • -quiet (-q): 禁止任何信息输出。
  • -no-interaction (-n): 不进行任何交互式提问。
  • -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: 包的作者。
  • -homepage: 包的主页。
  • -require: 需要的其他包,必须包含版本约束,格式应遵循 foo/bar:1.0.0
  • -require-dev: 开发版依赖包,格式与 -require 相同。
  • -stability (-s): minimum-stability 字段的值。

安装 install

install 命令将从当前目录读取 composer.json 文件,处理依赖关系并将其安装到 vendor 目录下。

php composer.phar install 

如果当前目录下存在 composer.lock 文件,它将读取此文件中的依赖版本,而非根据 composer.json 文件获取依赖。这确保每个使用者都能获得相同的依赖版本。

如果没有 composer.lock 文件,composer 会在处理完依赖关系后创建它。

安装-参数

  • -prefer-source: 下载包的方式有两种: sourcedist。对于稳定版本,composer 默认使用 dist 方式,而 source 表示版本控制源。如果启用了 --prefer-source,composer 将从 source 安装(如果可用)。这在需要将 bugfix 应用于项目时非常有用,并且可以直接从本地版本库获取依赖。
  • -prefer-dist:--prefer-source 相反,composer 将尽可能从 dist 获取,这将显著加速在构建服务器上的安装,并且可以避免 git 问题。
  • -dry-run: 如果您只想模拟安装而不执行实际操作,可以使用 --dry-run 命令,它将模拟安装并显示将要执行的操作。
  • -dev: 安装 require-dev 字段中列出的包(这是默认选项)。
  • -no-dev: 跳过 require-dev 字段中列出的包。
  • -no-scripts: 跳过 composer.json 文件中定义的脚本。
  • -no-plugins: 禁用插件。
  • -no-progress: 移除进度信息,以避免在某些终端或脚本中出现混乱的显示。
  • -optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为 classmap,以获得更快的加载支持。特别是在生产环境下建议使用,但运行时需要一些时间,因此并未默认启用。

更新 update

如果希望获取依赖的最新版本并升级 composer.lock 文件,您应使用 update 命令。

php composer.phar update 

这将解决项目的所有依赖,并将确切的版本号写入 composer.lock

如果只想更新某几个包,可以将它们逐个列出:

php composer.phar update vendor/package vendor/package2 

您还可以使用通配符进行批量更新:

php composer.phar update vendor/* 

更新-参数

  • -prefer-source: 当有可用包时,从 source 安装。
  • -prefer-dist: 当有可用包时,从 dist 安装。
  • -dry-run: 模拟命令,不执行实际操作。
  • -dev: 安装 require-dev 字段中列出的包(这是默认选项)。
  • -no-dev: 跳过 require-dev 字段中列出的包。
  • -no-scripts: 跳过 composer.json 文件中定义的脚本。
  • -no-plugins: 禁用插件。
  • -no-progress: 移除进度信息,以避免在某些终端或脚本中出现混乱的显示。
  • -optimize-autoloader (-o): 将 PSR-0/4 自动加载转换为 classmap,以获得更快的加载支持。建议在生产环境中使用,但由于运行需要时间,因此并未默认启用。
  • -lock: 仅更新 lock 文件的哈希,取消关于 lock 文件过时的警告。
  • -with-dependencies: 同时更新白名单内包的依赖关系,执行递归更新。

申明依赖 require

require 命令用于将新的依赖包添加到当前目录的 composer.json 文件中。

php composer.phar require 

在添加或更改依赖时,修改后的依赖关系将被安装或更新。

如果您不希望通过交互方式指定依赖包,可以直接在命令中指定依赖包。

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

申明依赖-参数

  • -prefer-source: 当有可用包时,从 source 安装。
  • -prefer-dist: 当有可用包时,从 dist 安装。
  • -dev: 安装 require-dev 字段中列出的包。
  • -no-update: 禁用依赖关系的自动更新。
  • -no-progress: 移除进度信息,以避免在某些终端或脚本中出现混乱的显示。
  • -update-with-dependencies: 同时更新新安装包的依赖。

全局执行 global

global 命令允许您在 COMPOSER_HOME 目录下执行其他命令,如 installrequireupdate

如果将 $COMPOSER_HOME/vendor/bin 添加到 $PATH 环境变量中,您可以在命令行中全局安装应用,以下是一个示例:

php composer.phar global require fabpot/php-cs-fixer:dev-master 

现在,php-cs-fixer 就可以在全局范围内使用(假设您已设置了 PATH)。如需更新,只需运行 global update

php composer.phar global update 

搜索 search

search 命令允许您为当前项目搜索依赖包,通常只搜索 packagist.org 上的包,您可以直接输入搜索条件。

php composer.phar search monolog 

您还可以通过传递多个参数进行多条件搜索。

搜索-参数

  • -only-name (-N): 仅针对指定名称进行完全匹配搜索。

展示 show

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

php composer.phar show 

如果想查看某个包的详细信息,可以输入包名称。

php composer.phar show monolog/monolog  name     : monolog/monolog versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1 type     : library names    : monolog/monolog source   : [git] http://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da dist     : [zip] http://github.com/Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da license  : MIT  autoload psr-0 Monolog : src/  requires php >=5.3.0 

您甚至可以输入软件包的版本号,以显示该版本的详细信息。

php composer.phar show monolog/monolog 1.0.2 

展示-参数

  • -installed (-i): 列出已安装的依赖包。
  • -platform (-p): 仅列出平台软件包(PHP及其扩展)。
  • -self (-s): 仅列出当前项目信息。

依赖性检测 depends

depends 命令用于查找已安装的某个包是否被其他包依赖,并列出这些包。

php composer.phar depends --link-type=require monolog/monolog  nrk/monolog-fluent poc/poc propel/propel symfony/monolog-bridge symfony/symfony 

依赖性检测-参数

  • -link-type: 检测类型,默认为 require,也可以是 require-dev

有效性检测 validate

在提交 composer.json 文件并创建标签之前,您应该始终运行 validate 命令。它将检查您的 composer.json 文件的有效性。

php composer.phar validate 

有效性检测参数

  • -no-check-all: 指定是否进行完整的验证。

依赖包状态检测 status

如果您经常修改依赖包的代码并且它们是从源(自定义源)安装的,status 命令将允许您检查是否有本地更改。

php composer.phar status 

您可以使用 --verbose 系列参数(-v|vv|vvv)获取更详细的信息:

php composer.phar status -v  You have changes in the following dependencies: vendor/s