Composer包管理工具安装及使用


一、Composer是什么?

Composer PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。

 

二、Composer可以解决什么问题?

a) 你有一个项目依赖于若干个库。

b) 其中一些库依赖于其他库。

c) 你声明你所依赖的东西。

d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。

 

三、Composer怎么安装?

(1)系统要求

a) 运行 Composer 需要 PHP 5.3.2+ 以上版本。

b)需要开启 openssl 配置,我们打开 php 目录下的 php.ini,将 =extension=php_openssl.dll 前面的分号去掉

(2)Windows安装

下载可执行exe文件直接安装:

https://getcomposer.org/Composer-Setup.exe

(3)*nix安装

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

PS:关于php phar资料可参考官方网站:https://www.php.net/manual/en/book.phar.php

 

 

四、怎么配置国内镜像地址或者自定义镜像地址,提升拉取速度?

方式一、修改 composer 的全局配置文件(推荐方式)

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 

 

方式二、修改当前项目的 composer.json 配置文件

 "repositories": [
  {
    "type": "composer",
    "url": "https://mirrors.aliyun.com/composer/"
  }
]

 

更多关键词参考官网:https://docs.phpcomposer.com/04-schema.html

 

五、如何自定义镜像仓库?

(参考自官网:https://docs.phpcomposer.com/02-libraries.html#Publishing-to-a-VCS  https://docs.phpcomposer.com/05-repositories.html   )

方式一、直接使用vcs(版本控制系统)仓库地址(这里以git为例),在项目composer.json中添加:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://gitee.com/sindsun/composer.git"
        }
    ],
    "require": {
        "sindsun/composer": "1.0.*"
    }
}

 

方式二、使用symfony提供的工具satis构建搭建packgist,并引用到项目中

 

六、如何更新Composer

composer selfupdate

 

七、Composer如何安装依赖?

方式一、在项目的目录下创建一个 composer.json 文件,文件描述了项目的依赖关系,格式如下:

{
    "require": {
        "monolog/monolog": "1.2.*"
     }
}

然后执行安装命令:composer install

 

方式二、使用 require 命令快速的安装一个依赖而不需要手动在 composer.json 里添加依赖信息

composer require monolog/monolog 1.2.*

 

八、Composer怎么约束版本?

1、 精确版本

我们可以告诉 Composer 安装的具体版本,例如:1.0.2,指定 1.0.2 版本。

 

2、 范围

通过使用比较操作符来指定包的范围。这些操作符包括:>,>=,<,<=,!=。

你可以定义多个范围,使用空格或者逗号 , 表示逻辑上的与,使用双竖线 || 表示逻辑上的或。其中与的优先级会大于或。 实例:

>=1.0

>=1.0 <2.0

>=1.0 <1.1 || >=1.2

我们也可以通过使用连字符 - 来指定版本范围。

连字符的左边表明了 >= 的版本,如果右边的版本不是完整的版本号,则会被使用通配符进行补全。例如1.0 - 2.0等同于>=1.0.0 <2.12.0相当于2.0.*),而1.0.0 - 2.1.0则等同于>=1.0.0 <=2.1.0

 

3、 通配符

可以使用通配符来设置版本。1.0.*相当于>=1.0 <1.1
例子:1.0.*

 

4、 波浪号 ~

我们先通过后面这个例子去解释~操作符的用法:~1.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.0。对于使用Semantic Versioning(主义化版本号,是一个版本号标准/规则,https://semver.org/)作为版本号标准的项目来说,这种版本约束方式很实用。例如~1.2定义了最小的小版本号,然后你可以升级2.0以下的任何版本而不会出问题,因为按照Semantic Versioning的版本定义,小版本的升级不应该有兼容性的问题。简单来说,~定义了最小的版本,并且允许版本的最后一位版本号进行升级

 

5、 折音号 ^

^操作符的行为跟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

 

6、 版本稳定性

约束

内部约束

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

例子:1.0 - 2.0

如果你想指定版本只要稳定版本,你可以在版本后面添加后缀-stable

minimum-stability(最小稳定性,https://www.web3.xin/index/article/556.html 配置项定义了包在选择版本时对稳定性的选择的默认行为。默认是stable。它的值如下(按照稳定性排序):devalphabetaRCstable。除了修改这个配置去修改这个默认行为,我们还可以通过稳定性标识(例如@stable@dev)来安装一个相比于默认配置不同稳定性的版本。例如:

{
    "require": {
        "monolog/monolog": "1.0.*@beta",
        "acme/foo": "@dev"
    }}

 

九、除了上面用到的一些命令,Composer还有拿些常用命令

1、update 命令

update 命令用于更新项目里所有的包,或者指定的某些包

# 更新所有依赖

$ composer update

 

# 更新指定的包

$ composer update monolog/monolog

 

# 更新指定的多个包

$ composer update monolog/monolog symfony/dependency-injection

 

# 还可以通过通配符匹配包

$ composer update monolog/monolog symfony/*

 

2、remove 命令

remove 命令用于移除一个包及其依赖(在依赖没有被其他包使用的情况下),如果依赖被其他包使用,则无法移除

$ composer remove monolog/monolog

 

3、search 命令

search 命令可以搜索包 (或者到packagist搜索想要的包 https://packagist.org/

composer search monolog

 

4、show 命令

show 命令可以列出当前项目使用到包的信息

# 列出所有已经安装的包

$ composer show

 

# 可以通过通配符进行筛选

$ composer show monolog/*

 

# 显示具体某个包的信息

$ composer show monolog/monolog



声明:本资料主要摘自外部网站:

Composer中文网 https://docs.phpcomposer.com/

菜鸟教程 https://www.runoob.com/w3cnote/composer-install-and-usage.html

Packagist https://packagist.org/


版权声明: 此文为本站源创文章[或由本站编辑从网络整理改编],
转载请备注出处:
[狂码一生] https://www.sindsun.com/articles/8/141
[若此文确切存在侵权,请联系本站管理员进行删除!]


--THE END--