上一篇我们讲了9个命令,这回把接下来的命令都说一说。

config

顾名思义,使用此命令可以编辑 Composer 的一些基本设置,无论是本地的 composer.json 或者全局的 config.json 文件。

我们可以使用 composer config --list 来看看当下可以配置的所有项(composer默认项 + 当前项目项,当前项目优先)。

当然我们可以使用 composer config --list --global 列出项目的全局配置(composer默认项 + 全局配置项,全局优先)。

通过config我们首先可以查看当前项目的配置信息,比如bin文件夹,cache等等,这里列出几个。

[repositories.packagist.org.type] composer
[repositories.packagist.org.url] https://packagist.phpcomposer.com
[process-timeout] 300
[use-include-path] false
[preferred-install] auto
[notify-on-install] true
[github-protocols] [https, ssh]
[vendor-dir] vendor (F:\wwwroot\BeiGeXiongDiLian/vendor)
[bin-dir] {$vendor-dir}/bin (F:\wwwroot\BeiGeXiongDiLian/vendor/bin)
[cache-dir] C:/Users/Administrator/AppData/Local/Composer
[data-dir] C:/Users/Administrator/AppData/Roaming/Composer
[cache-files-dir] {$cache-dir}/files (C:/Users/Administrator/AppData/Local/Composer/files)
[cache-repo-dir] {$cache-dir}/repo (C:/Users/Administrator/AppData/Local/Composer/repo)
[cache-vcs-dir] {$cache-dir}/vcs (C:/Users/Administrator/AppData/Local/Composer/vcs)
[cache-ttl] 15552000
[cache-files-ttl] 15552000
[cache-files-maxsize] 300MiB (314572800)
[bin-compat] auto
.......

当然除了查看,我们也能修改某个配置项,比如下面的代码

composer config process-timeout 1900
composer config -g process-timeout 1700
  • 第一行修改了当前项目的配置,信息在项目root目录的composer.json存储。
  • 第二行修改了全局的配置,信息在[data-dir]目录的config.json中存储。

当然如果配置项是数组形式,你可以多写几个value,空格分开。

当然config还有一些参数,比如--editor (用编辑器打开修改),--unset (移除某个配置项)等。

create-project

主要用来安装一个项目,比如我们在安装yii2的时候就有如下的语句

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

这相当于执行了一个 git clone 或 svn checkout 命令后将这个包的依赖安装到它自己的 vendor 目录。

这个命令也有挺多的参数

  • --stability (-s): 资源包的最低稳定版本,默认为 stable。
  • --prefer-source: 当有可用的包时,从 source 安装。
  • --prefer-dist: 当有可用的包时,从 dist 安装。
  • --dev: 安装 require-dev 字段中列出的包。
  • --no-install: 禁止安装包的依赖。

depends

依赖性检测,命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们。

假设我们为程序安装了abei2017/yii2-emoji,而yii2-emoji依赖于emojione/emojione,看看执行depends命令的结果。

composer depends emojione/emojione
abei2017/yii2-emoji  1.0.0  requires  emojione/emojione (^3.1)

composer depends abei2017/yii2-emoji
yiisoft/yii2-app-basic  -  requires  abei2017/yii2-emoji (^1.0)

看明白了吧?默认是根据json文件的require配置项检测,也可以根绝require-dev来检查,传递一个参数即可,如下面代码。

composer depends --link-type=require-dev emojione/emojione

diagnose

错误诊断,要注意的是这个命令只是检查composer.json及composer一些配置项是否正确,不检查依赖逻辑。看看下面代码,检查的流程。

Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com oauth access: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK

dump-autoload / dumpautoload

某些情况下你需要更新 autoloader,例如在你的包中加入了一个新的类。你可以使用 dump-autoload 来完成,而不必执行 install 或 update 命令。

它有两个参数:--optimize (-o) & --no-dev,其中--optimize (-o)是个性能优化选项,在生产环境如下命令可以提高加载性能。

composer dumpautoload --optimize

不加--optimize这一选项,你可能会发现20%到25%的性能损失。

global

允许你在 COMPOSER_HOME 目录下执行其它命令,像 install、require 或 update。看下面代码

composer global require abei2017/yii2-emoji

abei2017/yii2-emoji 全局安装并使用。

info

这个参数比较简单,如果你用 composer info 则会直接列出当前项目的所有依赖(名称+版本+简介),如果你使用 composer info abei2017/yii2-emoji跟了一个扩展,则将扩展的composer.json内容整理下显示出来。

licenses

将当前项目所有依赖的协议都列出来,方便你查询,如下面的代码

//composer licenses
abei2017/yii2-emoji                 1.0.0    MIT
behat/gherkin                       v4.4.5   MIT
bower-asset/bootstrap               v3.3.7   MIT
bower-asset/jquery                  2.2.4    MIT
bower-asset/jquery.inputmask        3.3.6    http://opensource.org/licenses/mit-license.php
bower-asset/punycode                v1.3.2   none
bower-asset/typeahead.js            v0.11.1  none
bower-asset/yii2-pjax               v2.0.6   MIT
cebe/markdown                       1.1.2    MIT
.......

list

好简单,列出所有命令。

show

列出所有可用的扩展,我们也可以使用比如 composer show abei2017/yii2-emoji 查看一个扩展的详情,还可以帅选 composer show abei2017/*

这个命令有一些参数

  • --all 这是一个很大的命令,列出在packagist.org上所有可用的扩展(名字 + 版本 + 简介)
  • --installed (-i) 列出我们项目安装的扩展
  • --platform (-p) 只列出平台扩展(php & extensions)。
  • --available (-a) 列出当前可以获得的扩展。
  • --self (-s) 列出 root扩展信息,即当前项目的。
  • --name-only (-N) 只显示名字(不显示版本和简介)
  • --path (-P) 显示当前项目安装的扩展的物理目录。
  • --tree 这个命令也不错,列出所有的依赖及其依赖关系
  • --outdated (-o) 列出所有有新版的扩展

outdated

这个命令也不错,等于composer show -lo

remove

删除一个扩展,该命令首先改动composer.json,删除相应的依赖,然后执行。如果要一次删除多个扩展,可以一次写出,空格分开即可。

这个命令也有很多参数,比如删除库后不进行依赖的更新等。

  • --dev: 从 require-dev 删除扩展。
  • --no-update: 禁用依赖关系的自动更新。
  • --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
  • --update-with-dependencies: 同时更新删除扩展的依赖扩展。

require

添加一个扩展并且更新到composer.json内

composer require abei2017/yii2-emoji

改命令参数也很多

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

小结

写了好多,防止大家看着累,先到这里,下一篇把剩下的几个说完。另外针对于requrie / remove的参数比较多,会单独拿出一篇来说。