VPN技术 · 2023年11月10日 0

composer基础命令:下载相关软件包

composer基本命令(下载关联的软件包)

全局参数

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

  • –verbose (-v): 增加反馈信息的详细度。
    • -v 表示正常输出。
    • -vv 表示更详细的输出。
    • -vvv 则是为了 debug。
  • –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: 下载包的方式有两种: source 和 dist。对于稳定版本composer将默认使用 dist方式。而 source 表示版本控制源。如果 --prefer-source 是被启用的,composer将从 source 安装(如果有的话)。如果想要使用一个bugfix到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。
  • –prefer-dist: 与 --prefer-source 相反,composer将尽可能的从 dist 获取,这将大幅度的加快在build servers 上的安装。这也是一个回避 git问题的途径,如果你不清楚如何正确的设置。
  • –dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行 --dry-run 命令,它将模拟安装并显示将会发生什么。
  • –dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
  • –no-dev: 跳过 require-dev 字段中列出的包。
  • –no-scripts: 跳过 composer.json 文件中定义的脚本。
  • –no-plugins: 关闭 plugins。
  • –no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
  • –optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 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: 关闭 plugins。
  • –no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
  • –optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
  • –lock: 仅更新 lock 文件的 hash,取消有关 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 目录下执行其它命令,像 installrequire 或 update

并且如果你将 $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 文件,和创建 tag 前,你应该始终运行 validate 命令。它将检测你的 composer.json文件是否是有效的

php composer.phar validate 

有效性检测参数

  • –no-check-all: Composer 是否进行完整的校验。

依赖包状态检测 status

如果你经常修改依赖包里的代码,并且它们是从 source(自定义源)进行安装的,那么 status 命令允许你进行检查,如果你有任何本地的更改它将会给予提示。

php composer.phar status 

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

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