composer 常用命令
Composer更换国内镜像
全局更换镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
仅当前项目更换镜像:在项目目录中执行
composer config repo.packagist composer https://packagist.phpcomposer.com
也可以修改项目中的composer.json文件:
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
有时候运气不好,https://packagist.phpcomposer.com
站点维护不可用,那么可以尝试用Laravel China 维护的站点
将上面的地址换成下面地址即可
https://packagist.laravel-china.org
添加更新包
#更新所有依赖包, 并且升级composer.lock文件,如果vendor 没有composer.json文件中的包自动下载新的 composer update #如果你只是想更新几个包,你可以像这样分别列出它们 composer update package package2 #你还可以使用通配符进行批量更新 composer.phar update symfong/* # 添加指定包 composer require monolog/monolog # 添加指定包和版本,3中不同的方式 composer require monolog/monolog:1.19 composer require monolog/monolog=1.19 composer require monolog/monolog 1.19 #在 composer.json 配置中添加依赖库之后运行此命令安装,然后运行install命令 composer install packageName
compoesr 的require/update均可以更新指定的依赖包(升级/降级)
require更为灵活些,未安装则进行安装,已安装则根据传入的版本号进行升级或降级。
update则没法在命令行传入新的版本号,须要先手动在composer.json中指定新的版本号,而后执行更新命令。
你执行composer update的时候,composer会去读取composer.json中指定的依赖,去分析他们,并且去拉取符合条件最新版本的依赖。然后他会把所拉取到的依赖放入vendor目录下,并且把所有拉取的依赖的精确版本号写入composer.lock文件中。
composer install所执行的事情非常类似,只在第一步的时候有差别。当你本地如果已经存在一份composer.lock时,它将会去读取你的composer.lock而非composer.json,并且以此为标准去下载依赖。当你本地没有composer.lock的时候,它所做的事情和composer update其实并没有区别。
这意味着,只要你本地有一份composer.lock,你就可以保证无论过去了多久,你都能拉到相同的依赖。而如果你把它纳入你的项目的版本控制中,那么你就可以确保你项目中的每一个人、每一台电脑,不管什么系统,都能拉取到一模一样的依赖,以减少潜在的依赖对部署的影响。当然,请记得,你应该使用的命令是composer install。
那什么时候该使用composer update呢?当你修改了你的依赖关系,不管是新增了依赖,还是修改了依赖的版本,又或者是删除了依赖,这时候如果你执行composer install的时候,是不会有任何变更的,但你会得到一个警告信息 Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
show列出已安装的包
# 列出所有已经安装的包 $ composer show # 可以通过通配符进行筛选 $ composer show monolog/* # 显示具体某个包的信息 $ composer show monolog/monolog
search 搜索指定包
#搜索指定包 $ composer search monolog # 如果只是想匹配名称可以使用--only-name选项 $ composer search --only-name monolog
remove 移除包
使用remove命令可以移除一个包及其依赖(在依赖没有被其他包使用的情况下):
$ composer remove monolog/monolog
本人测试这个命令不起作用,可以 修改 composer.json 文件,去除 monolog/monolog (想要移除的项目),执行 composer update 即可
composer 创建项目
# 安装指定版本 php composer.phar create-project doctrine/orm path 2.2.* # 安装指定版本,当有可用的包时,从 dist 安装。 composer create-project laravel/laravel Laravel –prefer-dist “5.1.*” 创建项目-参数 --repository-url: 提供一个自定义的储存库来搜索包,这将被用来代替 packagist.org。可以是一个指向 composer 资源库的 HTTP URL,或者是指向某个 packages.json 文件的本地路径。 --stability (-s): 资源包的最低稳定版本,默认为 stable。 --prefer-source: 当有可用的包时,从 source 安装。 --prefer-dist: 当有可用的包时,从 dist 安装。 --dev: 安装 require-dev 字段中列出的包。 --no-install: 禁止安装包的依赖。 --no-plugins: 禁用 plugins。 --no-scripts: 禁止在根资源包中定义的脚本执行。 --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。 --keep-vcs: 创建时跳过缺失的 VCS 。如果你在非交互模式下运行创建命令,这将是非常有用的。
这相当于执行了一个 git clone 或 svn checkout 命令后将这个包的依赖安装到它自己的 vendor 目录。create-project 命令,传递一个包名,它会为你创建项目的目录。你也可以在第三个参数中指定版本号,否则将获取最新的版本。
composer 自身命令
# 查看当前配置 composer config -g #回滚上一个版本 composer self-update -r #只更新自动加载而不去更新依赖 composer dump-autoload #查看所有命令 composer list #清除缓存 composer clear-cache
相关文章 PHP 开发者该知道的 5 个 Composer 小技巧