修改 composer 的全局配置文件
composer config -g repo.packagist composer https://packagist.phpcomposer.com
composer config -g repo.packagist composer 镜像地址
说明 :若项目之前已通过其他源安装,可以删除 composer.lock 和 vendor 目录重新安装。
解除镜象: 关闭镜像
如果需要解除镜像并恢复到 packagist 官方源,请执行以下命令:
composer config -g --unset repos.packagist
中国composer镜像源:
========================================================================
阿里云 Composer 全量镜像
镜像地址:
https://mirrors.aliyun.com/composer/
官方地址:
https://mirrors.aliyun.com/composer/index.html
说明:终于接上大厂水管了,还没来得急测,先更新,估计阿里云做的也不会差。
腾讯云 Composer 全量镜像
镜像地址:
https://mirrors.cloud.tencent.com/composer/
官方地址:
https://mirrors.cloud.tencent.com/composer
说明:若您使用腾讯云服务器,可以将源的域名从 mirrors.cloud.tencent.com 改为 mirrors.tencentyun.com,使用内网流量不占用公网流量,是不是非常良心。
华为 Composer 全量镜像
镜像地址:
https://mirrors.huaweicloud.com/repository/php/
官方地址:
https://mirrors.huaweicloud.com/
说明:华为 composer 镜像目前还不够完善,composer i 时会出现一些 bug ,而且同步速度也比较慢,好像并非是全量的。
Packagist / Composer 中国全量镜像
镜像地址:
https://packagist.phpcomposer.com
官方地址:
https://pkg.phpcomposer.com/
说明:Packagist 中国全量镜像是从 2014 年 9 月上线的,在安装和同步方面都比较完善,也一直是公益运营,但不知道目前这个镜像是否还是可用状态。
Composer / Packagist 中国全量镜像
镜像地址:
https://php.cnpkg.org
官方地址:
https://php.cnpkg.org/
说明:此 composer 镜像由安畅网络赞助,目前支持元数据、下载包全量代理,还是不错的,推荐使用。
Packagist / JP
镜像地址:
https://packagist.jp
官方地址:
https://packagist.jp
说明:这是日本开发者搭建的 composer 镜像,早上测了一下,感觉速度还不错。
Packagist Mirror
镜像地址:
https://packagist.mirrors.sjtug.sjtu.edu.cn/
官方地址:
https://mirrors.sjtug.sjtu.edu.cn/packagist/
说明:上海交通大学提供的 composer 镜像,稳定、快速、现代的镜像服务,推荐使用。
Laravel China Composer 全量镜像
镜像地址:
https://packagist.laravel-china.org
官方地址:Laravel 论坛首页
说明:这个就不多了,国内 PHP 开发者使用量最多的 composer 镜像,同步速度快、稳定,推荐使用。
========================================================================
composer update
就会在该目录下生成一个vendor文件夹。以后所有的第三扩展包都会安装在这里。
composer 查看命令
安装扩展包
以下以monolog为例:
声明依赖
在项目目录下创建一个composer.json文件,指明依赖,比如,你的项目依赖 monolog:
Copy
{
"require": {
"monolog/monolog": "1.2.*"
}
}
不需要使用https,可以这么写,以解决有时候因为https造成的问题:
Copy
{
"require": {
"monolog/monolog": "1.2.*"
},
"config": {
"secure-http": false
}
}
安装依赖
安装依赖非常简单,只需在项目目录下运行:
composer install
如果没有全局安装的话,则运行:
php composer.phar install
更新全部的包(谨慎使用):
composer update
注意:使用composer install或者composer update命令将会更新所有的扩展包,项目中使用需谨慎!!!
若只安装指定的包推荐在命令行使用:
composer require monolog/monolog
进行安装。
如果需要指定版本:
composer require "monolog/monolog:1.2.*"
更新某个包:
composer update monolog/monolog
移除某个包:
composer remove monolog/monolog
composer list 列出所有可用的命令
composer init 初始化composer.json文件(就不劳我们自己费力创建啦),会要求输入一些信息来描述我们当前的项目,还会要求输入依赖包
composer install 读取composer.json内容,解析依赖关系,安装依赖包到vendor目录下
composer update 更新最新的依赖关系到compsoer.lock文件,解析最新的依赖关系并且写入composer.lock文件
composer search packagename 搜索包,packagename替换为你想查找的包名称
composer require packagename 添加对packagename的依赖,packagename可修改为你想要的包名称
composer show packagename
composer self-update 更新 composer.phar文件自身
composer clearcache 清除composer缓存
composer dump-autoload --optimize 优化一下自动加载
composer command --help 以上所有命令都可以添加 --help选项查看帮助信息
composer update 包名 只更新指定的包文件
推荐的一些composer包:
overtrue/wechat 让微信开发更简单!
thenbsp/wechat
catfan/medoo
illuminate/database
psr/log
monolog/monolog
symfony/event-dispatcher
phpunit/phpunit
phpunit/php-timer
michelf/php-markdown markdown 文档解析
intervention/image 图片处理
mytharcher/alipay-php-sdk
composer self-update
自己更新自己
composer 应该知道的5个小知识
仅更新单个库
只想更新某个特定的库,不想更新它的所有依赖,很简单:
composer update foo/bar
此外,这个技巧还可以用来解决“警告信息问题”。你一定见过这样的警告信息:
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.
擦,哪里出问题了?别惊慌!如果你编辑了composer.json,你应该会看到这样的信息。
比如,如果你增加或更新了细节信息,比如库的描述、作者、更多参数,甚至仅仅增加了一个空格,
都会改变文件的md5sum。然后Composer就会警告你哈希值和composer.lock中记载的不同。
那么我们该怎么办呢?
只需要执行这条命令即可
$ composer update
update命令可以更新lock文件。
但是如果仅仅增加了一些描述,应该是不打算更新任何库。
这种情况下,只需update nothing
$ composer update nothing
Loading composer repositories with package information
Updating dependencies
Nothing to install or update
Writing lock file
Generating autoload files
这样一来,Composer不会更新库,但是会更新composer.lock。
如果你输入foobar,结果也一样。
如果你用的Composer版本足够新,那么你可以直接使用--lock选项:
composer update --lock
不编辑composer.json的情况下安装库
你可能会觉得每安装一个库都需要修改composer.json太麻烦,那么你可以直接使用require命令。
composer require "foo/bar:1.0.0"
这个方法也可以用来快速地新开一个项目。
init命令有--require选项,可以自动编写composer.json:(注意我们使用-n,这样就不用回答问题)
$ composer init --require=foo/bar:1.0.0 -n
$ cat composer.json
{
"require": {
"foo/bar": "1.0.0"
}
}
remove命令
使用remove命令可以移除一个包及其依赖(在依赖没有被其他包使用的情况下):
$ composer remove monolog/monolog
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing monolog/monolog (1.19.0)
- Removing psr/log (1.0.0)
Writing lock file
Generating autoload files
search命令
使用search命令可以进行包的搜索:
$ composer search monolog
monolog/monolog Sends your logs to files, sockets, inboxes, databases and various web services
# 如果只是想匹配名称可以使用--only-name选项
$ composer search --only-name monolog
show命令
使用show命令可以列出项目目前所安装的包的信息:
# 列出所有已经安装的包
$ composer show
# 可以通过通配符进行筛选
$ composer show monolog/*
# 显示具体某个包的信息
$ composer show monolog/monolog
[sonzhan@anhao-dev-1 home-doctor-work]$ composer show wedoctor/microserv-app-service name : wedoctor/microserv-app-service descrip. : 微服务包 keywords : microserv-app-service, wedoctor versions : * dev-master type : library license : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText source : [git] https://git.nc.com/bhc/p-app-service.git 46a67ed6b192eb7578db7ff34d7675dd481d957a dist : [] path : /web/home-doctor-work/vendor/wedoctor/microserv-app-service names : wedoctor/microserv-app-service autoload psr-4 Wedoctor\MicroservAppService\ => / classmap / requires (dev) illuminate/support 5.4.* wedoctor/convention dev-master wedoctor/eureka-client 0.0.*
通配符
可以使用通配符去定义版本。1.0.*相当于>=1.0 <1.1。
例子:1.0.*
下一个重要版本操作符
波浪号~
我们先通过后面这个例子去解释~操作符的用法:
~1.2相当于>=1.2 <2.0.0,
而~1.2.3相当于>=1.2.3 <1.3.0。
简单来说,~定义了最小的版本,并且允许版本的最后一位版本号进行升级。
例子:~1.2
折音号^
^操作符的行为跟Semantic Versioning有比较大的关联,它允许升级版本到安全的版本。例如,^1.2.3相当于>=1.2.3 <2.0.0,因为在2.0版本前的版本应该都没有兼容性的问题。而对于1.0之前的版本,这种约束方式也考虑到了安全问题,例如^0.3会被当作>=0.3.0 <0.4.0对待。
例子:^1.2.3
版本稳定性
如果你没有显式的指定版本的稳定性,Composer会根据使用的操作符,默认在内部指定为-dev或者-stable。例如:
约束 内部约束
1.2.3 =1.2.3.0-stable
>1.2 >1.2.0.0-stable
>=1.2 >=1.2.0.0-dev
>=1.2-stable >=1.2.0.0-stable
<1.3 <1.3.0.0-dev
<=1.3 <=1.3.0.0-stable
1 - 2 >=1.0.0.0-dev <3.0.0.0-dev
~1.3 >=1.3.0.0-dev <2.0.0.0-dev
1.4.* >=1.4.0.0-dev <1.5.0.0-dev
如果你想指定版本只要稳定版本,你可以在版本后面添加后缀-stable。
minimum-stability 配置项定义了包在选择版本时对稳定性的选择的默认行为。默认是stable。它的值如下(按照稳定性排序):dev,alpha,beta,RC和stable。除了修改这个配置去修改这个默认行为,我们还可以通过稳定性标识(例如@stable和@dev)来安装一个相比于默认配置不同稳定性的版本。例如:
{
"require": {
"monolog/monolog": "1.0.*@beta",
"acme/foo": "@dev"
}
}
假设配置的 web 站点地址是 http://127.0.0.1 ,则可使用如下命令创建composer项目:
composer create-project vendor/project --no-secure-http --no-interaction --repository=http://127.0.0.1
或者配置下以下选项:
composer config -g secure-http false
composer config -g repo.my_repo composer http://127.0.0.1
切换镜像源
composer config -g repo.packagist composer https://packagist.phpcomposer.com
可以通过 composer config -l -g 命令进行查看