作为程序员一定要保持良好的睡眠,才能好编程

composer 版本号控制说明、composer中常用命令

发布时间:2020-02-02


修改 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 命令进行查看


image.png