概述
主要介绍composer安装,composer 命令,composer 版本号写法。
安装
只需要下载 composer.phar 文件到本地即可。
# 在composer.phar目录下执行
php composer.phar help
依赖包名称和版本号命名
包名称规则
组成:monolog/monolog
形式,防止重复,供应商名称+项目名称的形式
版本约束
[alt type="warning"]名称组成:[/alt]主版本号.次版本号.修订号
的形式,拓展阅读可以阅读语义化版本
- 主版本号:做了不兼容的修改
- 次版本号:做了向下兼容的功能性新增
- 修订号:做了向下兼容的问题修正
[alt type="warning"]版本号匹配规则:[/alt],拓展阅读在线检测匹配规则
- 精准匹配,匹配到:具体的版本号
# 安装指定的1.0.0版本 composer require "foo/bar:1.0.0"
- 通配符 ,匹配到:任何版本号,注意:`
号必须出现在版本号的最后,
6.*.4` 的形式是不可以的# 匹配到:任何版本 composer require "foo/bar:*" # 匹配到:1开头的任何版本 composer require "foo/bar:1.*" # 匹配到:1.0开头的任何版本 composer require "foo/bar:1.0.*"
- 波浪号~,匹配到:>= 当前版本号 and < 当前版本号的上一级的最小版本号,注意:和
*
相比,~
可以指定下限# >=1.0 ,<2.0.0 composer require "foo/bar:~1.0" # >=1.0.1 ,<1.1.0 composer require "foo/bar:~1.0.1"
- 脱字符 ^,匹配到:该主版本号开头的所有版本号,注意:和 ~ 相比,^ 只限制主版号,这个是推荐,能保证兼容性
# >=1.1.1 并且 <2.0.0,主版本号2不能变 composer require "foo/bar:^1.0.1" # >=0.3.0 并且 <0.4.0 # 因为1.0 版本之前是不稳定的,都不考虑兼容,所以是次一级不变 composer require "foo/bar:^0.3"
- 逻辑运算符,匹配到:自定义的规则,逗号代表
AND
关系,管道符号|
表示是OR
关系,AND 的优先级高于 OR。注意:不推荐,因为忘记限制上限的话,则会更新主版本号,导致不兼容# >=1.1.1 并且 <2.0.0,主版本号2不能变 composer require "foo/bar:>=1.0" composer require "foo/bar:>=1.0,<2.0" composer require "foo/bar:>=1.0,<1.1|>=1.2"
[alt type="warning"]稳定性约束[/alt],稳定等级有以下几种方式:
- @stable:稳定版,这个是默认的版本
- @rc:候选版,几乎就不会加入新的功能了,而主要着重于除错
- @beta:公测版,会一直加入新的功能
- @alpha:内部测试版本
- @dev:开发版本
注意:低稳定性低的可以安装高稳定性的
# dev的可以安装所有的包
composer require laravel/laravel:"*@dev"
自动加载配置
- 引入初始化文件
require __DIR__ . '/../vendor/autoload.php';
- 配置自定义加载目录,注意:相对目录是相对 composer.json 文件所在目录,需要执行
composer install
来更新缓存文件{ "autoload": { // psr4自动加载 "psr-4": { "app\\": "app" }, // psr0自动加载 "psr-0": { "extend": "extend/" } } }
常用命令
- composer init
# 初始项目 php composer.phar init
- composer install,安装依赖。不存在
composer.lock
文件,则读取composer.json
,并创建锁文件,存在composer.lock
文件,则直安装 lock 文件里的具体版本。注意:为了确保组员们安装的依赖版本是一致的,需将 composer.json 文件加入版本库。# 初始项目 php composer.phar install # 如果有些linux的依赖,widows下没有,但是又要正常安装,可以选择忽略 composer install --ignore-platform-reqs
- composer require,安装新的依赖包,会更新
composer.json
文件。composer require vendor/package:2.* vendor/package2:dev-master
- composer update,更新依赖。会更新依赖包,更新 lock 文件。
# 更新所有的依赖 composer update # 更新指定的依赖 php composer.phar update monolog/monolog # 用空格隔开,更新多个 php composer.phar update monolog/monolog laravel/laravel
有些扩展只有在linux下才能安装,例如laravel horizon,为了在window下不报错, 使用 --ignore-platform-reqs 选项运行 composer 并指定 pcntl 和 posix
composer install --ignore-platform-reqs