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 目录下执行其它命令,像 install、require 或 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