composer基础知识

包版本说明:

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 提供脚本使用的额外数据

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容