composer基础知识

2022-07-20  本文已影响0人  gao922699

包版本说明:

1.0.2 你可以指定包的确切版本。

=1.0 >=1.0,<2.0 >=1.0,<1.1|>=1.2 通过使用比较操作符可以指定有效的版本范围。有效的运算符:>、>=、<、<=、!=。你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号|将作为逻辑OR处理。 AND 的优先级高于 OR。

1.0.* 你可以使用通配符来指定一种模式。1.0.与>=1.0,<1.1是等效的。

~1.2 这对于遵循语义化版本号的项目非常有用。~1.2相当于>=1.2,<2.0。

composer install和update的区别:

install会优先检查composer.lock文件中确定的版本,不会更新各个包的最新版本。

updata会优先检查composer.json文件中定义的包版本号,检查最新的可用版本。

平台软件包和普通软件包

普通软件包是一个可安装的包(包含name属性,不含name属性的包不可被安装),通过require引入

平台软件包是已经安装在系统上的软件,包括PHP本身和一些扩展和库。composer show --platform查看可用列表。

例:

"require": {
        "monolog/monolog": "1.0.*",
        "php":">=5.6",
        "ext-redis":">4.1"
    }

root包

由 composer.json 定义的在你项目根目录的包,是一个上下文的关系,同一个包再不同地方用可能角色不一样。

包版本

通过vcs的信息自动推断出版本。以git为例,通过分支和标签判断出版本

标签:

命名规范:应该符合 'X.Y.Z' 或者 'vX.Y.Z' 的形式,-patch、-alpha、-beta 或 -RC 这些后缀是可选的。在后缀之后也可以再跟上一个数字。

例:

1.0.0

v1.0.0

1.10.5-RC1

v4.4.4beta2

v2.0.0-alpha

v2.0.4-p1

注:require指定版本号时前面的'v'不填

分支:

如果分支名看起来像一个版本号,会创建一个{分支名}-dev的包版本。如果分支名看起来不像版本号,会创建一个dev-{分支名}的包版本,如dev-master

1.x

1.0 (equals 1.0.x)

1.1.x

注:github上可以通过release功能来实现发布包版本

指定资源库

"repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/username/hello-world"
        }
    ],

如果包已经发布到packagist上,就不需要指定该参数了。

一些基本命令行:

init 初始化一个composer.json文件

install 安装包

--prefer-source

--prefer-dist 稳定版本默认此选项,有更快的安装速度

--no-dev 跳过require-dev中列出的包

--no-scripts 跳过脚本

--no-plugins 关闭plugins

--optimize-autoloader (-o) 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持(建议生产环境中使用)

update 更新包

参数和install类似

require 添加依赖

global 全局执行

search 搜索packagist.org上的包(如果配置了镜像则搜索镜像中的包)

show

包名:包的详细参数

--installed 已安装的包

--platform 平台软件包

--self 当前项目的信息

depends

查看某个包是否被其他包所依赖

validate

检测composer.json文件格式,提交前运行一遍

self-update 更新composer

config 配置

run-script 运行脚本

archive 归档

composer archive vendor/package 2.0.21 --format=zip

--format:tar/zip

--dir:默认当前目录

composer.json文件架构

标明root-only的只有当包是root包时才生效

name:包名,需发布时必须

description:描述,需发布时必须

version:版本,建议不填,会从VCS自动对应

type:安装类型

library 默认选项,简单的复制到vendor目录。

project 表示一个项目,例如框架程序,像yii2,laravel等。

其他两个很少用到(metapackage,composer-plugin)

keywords 关键词用于搜索过滤,数组格式,可选

homepage 项目url地址,可选

time 版本发布时间,可选

license 许可协议,MIT,Apache-2.0等。没研究过,一般填MIT。可选但是推荐填写。

authors 作者,可以有多个,每个可以包含name,email,homepage,role字段,可选但是推荐填写。

support 项目支持,email,issues,forum,wiki,irc,source等字段。

---------------------分割线---------------------------

以下对象都是填写包名:版本映射对象

**require ** 必须包含的包,可选

require-dev(root-only)**** 测试开发等需要用到的包,可选。root包的dev包默认会被安装,可以用--no-dev参数跳过。

conflict 冲突的包,不允许同时安装

replace 此列表中的包将会被当前包取代

---------------------分割线---------------------------

autoloader 自动加载

psr-4
{
    "autoload": {
        "psr-4": {
            "Monolog1\\": "src/",
            "Mono\\Log\\": "",
            "Monolog2\\": ["src/", "lib/"]
        }
    }
}

classmap

自定义加载的不遵循psr-0/4规范的类库

{
    "autoload": {
        "classmap": ["src/", "lib/", "Something.php"]
    }
}

在运行install/update后,存储在vendor/composer/autoload_classmap.php中

files

明确指定文件

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

minimum-stability(root-only)**** 通过稳定性过滤包,低于最低稳定性要求的包将会被过滤

dev 开发版本

alpha 内测版本

beta 公测版本

RC 候选版本

stable 稳定版本 默认

prefer-stable (root-only) 优先使用更稳定的包版本

**repositories **(root-only)**** 自定义资源库

https://docs.phpcomposer.com/05-repositories.html

config(root-only)**** 项目配置

https://docs.phpcomposer.com/04-schema.html#config

scripts(root-only) 脚本

https://docs.phpcomposer.com/articles/scripts.html

extra 提供脚本使用的额外数据

上一篇下一篇

猜你喜欢

热点阅读