1、name
包的名称。由供应商(vendor)名和新项目名构成,用 / 隔开。
在公布包的过程中必须填。
2、description
对包的一个简洁明了叙述,通常是一行的长短。
在公布包的过程中必须填。
3、version
包的版本号。
文件格式务必是 X.Y.Z,可选择性后缀名:-dev、-alphaN、-betaN、-RCN。
4、type
包的种类,默认设置为 library。
包种类用以订制组装逻辑性。假如你的包的组装必须一些特别的逻辑性,你能界定一个订制的种类。它可以是一个 symfony-bundle 的种类,或是 wordpress-plugin,或是 typo3-module。这种种类将被特殊的新项目常用,他们将给予安装器来组装这种种类的包。
Composer 适用 3 种种类:
library:初始值。它将拷贝文档到 vendor 文件目录。
project:它表明这也是个新项目,而不是库。例如像 Symfony 标配这类运用。
metapackage:一个带有依靠的快递空包,能开启组装,但不包含文档,不容易向系统文件写任何东西。
composer-install:为别的的订制种类的包给予安装器的包。
5、keywords
一个与包有关的关键字二维数组。用以包的检索和过虑。
可选。
6、homepage
新项目的网址 URL。
可选。
7、time
版本号发布时间。务必是 YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS 文件格式。
可选。
8、license
包的许可证书。可以是字符串数组或字符串数组。
可选,但强烈要求再加上。
9、authors
包的创作者。是个对象数组。
每一个 author 目标有这种特性:
name:创作者名称
email:创作者电子邮箱
homepage:创作者网址 URL
role:创作者在项目中的人物角色(如:developer 或 translator)
10、support
各种各样有关该新项目怎样获得适用的信息内容。包括这种特性:
email:获得适用的电子邮箱
issues:问题追踪的 URL
forum:社区论坛的 URL
wiki:Wiki 的 URL
irc:IRC 的频道栏目
source:查询或在线下载源代码的 URL
可选。
11、Package links
依赖包的投射表,由包名投射版本号管束。如:
{ "require": { "monolog/monolog": "1.0.*" } }
(1)require
列举包所依靠的包。除非是这种依靠早已存有,不然这一包不容易被组装。
(2)require-dev(root-only)
列举开发设计这一包(或跑检测这些)所依靠的包。在应用 install 指令时,仅有携带 “–dev” 主要参数才可以组装 dev 包。在应用 update 指令时,携带 “–no-dev” 则不升级。
(3)conflict
列举包会和什么包发生争执。他们将不被容许与你的包一起组装。假如管束了版本号,则只能对于特殊的版本号。
(4)replace
列举什么包需要被这一包取代。
(5)provide
这一包所建议的包目录。这一对公共性插口最有效,一个包可以依靠一个模拟的 logger 包,而完成 logger 插口的库可以放进 provide 字段名中。
12、suggest
提议一些能让这一包任务的更强或获得提高的包目录。这种信息内容只在包组装过去进行时得出,暗示着客户可以加上大量包,尽管并不是一定要安裝的。
文件格式是,包名投射文字描述,如:
{ "suggest": { "monolog/monolog": "Allows more advanced logging of the application flow" } }
13、autoload
给予给 PHP autoloader 的全自动载入投射。
现阶段适用的有:PSR-0 全自动载入标准,classmap 制作器,也有 files。
PSR-0 是较为建议的,因为它的出色的扩展性(在加入新的类的合适,不用再次转化成全自动加载器)。
(1)PSR-0
在 psr-0 键名下,界定一个类名到途径的投射表,相对性于包的网站根目录。留意,这也一样适用 PEAR-style 的沒有类名的设计风格。
一定要注意类名的申明得到 \ 结束,保证全自动加载器恰当回应。
PSR-0 的引入可以在组装或升级时转化成的资料中查询:
vendor/composer/autoload_namespaces.php
事例:
{ "autoload": { "psr-0": { "Monolog\": "src/", "Vendor\Namespace\": "src/", "Vendor_Namespace_": "src/" } } }
假如你必须在好几个文件目录里搜索同一个作为前缀的类名,你能用二维数组,如:
{ "autoload": { "psr-0": { "Monolog\": ["src/", "lib/"] } } }
PSR-0 设计风格并不限于载入类名的申明的物品,还可以用以类这一等级。当库中只有一个在全局性类名中的类时,这类方法就能用上。例如你有一个 PHP 源代码放到新项目的网站根目录,你能那样申明:
{ "autoload": { "psr-0": { "UniqueGlobalClass": "" } } }
假如你有一个文件目录下都是用类名机构的,你能用前所未有缀:
{ "autoload": { "psr-0": { "": "src/" } } }
(2)Classmap
classmap 的引入可以在组装或升级时转化成的资料中查询:
vendor/composer/autoload_classmap.php
类投射表有根据扫描仪特定的文件目录或文档下的全部的 .php 和 .inc 文档转化成的。
你能给一切不兼容 PSR-0 的库用 classmap 制作器完成全自动载入。配备上只需特定类所属的文件目录或文档就可以:
{ "autoload": { "classmap": ["src/", "lib/", "Something.php"] } }
(3)files
假如你确定必须在一切post请求里都载入一些文档,你能应用 files 全自动载入体制。针对这些库中有一些 PHP 涵数但不可以全自动载入时尤其有效。比如:
{ "autoload": { "files": ["src/MyLibrary/functions.php"] } }
14、include-path
(将被弃用,它的作用由 autoload 替代。实际上便是设定 include_path,可选)
15、target-dir
特定组装总体目标途径。
假如包的网站根目录是在类名下,全自动载入就有误了,因此才有 target-dir 来处理这个问题。
Symfony 便是个事例。它由许多部件包构成。Yaml 部件是在
SymfonyComponentYaml
类名下的,它的网站根目录是 Yaml 文件目录。要让全自动载入一切正常工作中,我们要保证它并不是组装在
vendor/symfony/yaml
,反而是在
vendor/symfony/yaml/Symfony/Component/Yaml
,那样全自动加载器才可以从 vendor/symfony/yaml 载入它。
因此要界定 target-dir 如下所示:
{ "autoload": { "psr-0": { "Symfony\Component\Yaml\": "" } }, "target-dir": "Symfony/Component/Yaml" }
16、minimum-stability(root-only)
界定依据可靠性怎样过虑包。默认设置是 stable,假如你信任一个 dev 包,你需要指出。
17、prefer-stable(root-only)
假如打开,Composer 会在平稳包和不稳定库中挑选前面一种。
18、repositories(root-only)
订制包的库房详细地址。
默认设置的,Composer 只应用 Packagist 库房。根据特定库房详细地址,你能从任何地方获得包。
库房不可以递归。你只有将他们加上到主的 composer.json 中。所依赖包中 composer.json 文档中的库房界定是被忽视的。
适用的库房的类别有:
(1)composer
composer 库房根据互联网给予 packages.json 文档,它包括一个 composer.json 目标的目录,也有附加的 dist 或 source 信息内容。packages.json 文档根据 PHP 流载入。
(2)vcs
版本号自动控制系统库房,如:git、svn、hg。
(3)pear
根据它,你能导进一切 pear 库房到你的新项目中。
(4)package
假如你依靠一个不兼容 composer 的新项目,你能界定一个 package 种类的库房,随后将 composer.json 目标立即载入。
详细的事例:
{ "repositories": [ { "type": "composer", "url": "http://packages.example.com" }, { "type": "composer", "url": "https://packages.example.com", "options": { "ssl": { "verify_peer": "true" } } }, { "type": "vcs", "url": "https://github.com/Seldaek/monolog" }, { "type": "pear", "url": "http://pear2.php.net" }, { "type": "package", "package": { "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" }, "source": { "url": "http://smarty-php.googlecode.com/svn/", "type": "svn", "reference": "tags/Smarty_3_1_7/distribution/" } } } ] }
19、config(root-only)
对于新项目的一些配备。
process-timeout:默认设置 300 秒,Composer 过程实行请求超时時间; use-include-path:默认设置 false,如果是 true,Composer 全自动加载器也会到 PHP 的 include_path 中搜索; preferred-install:默认设置 auto,设定 Composer 组装方法; github-protocols:默认设置 [“git”, “https”],设定与 github 通讯协议; github-oauth:设定 oauth; vendor-dir:默认设置 vendor,你能换为其他; bin-dir:默认设置 vendor/bin,假如新项目有二进制文件,会连接到这; cache-dir:默认设置 $home/cache,储放 Composer 运作时造成的缓存文件; cache-files-dir:默认设置 $cache-dir/files,储放包的 zip 文档; cache-repo-dir:默认设置 $cache-dir/repo,储放库房数据库; cache-vcs-dir:默认设置 $cache-dir/vcs,储放 vcs 复制; cache-files-ttl:默认设置六个月,缓存文件的到期時间; cache-files-maxsize:默认设置 300M; notify-no-install:默认设置 true,从库房安装文件会有一个通告,可以关闭; discard-changes:默认设置false,如何处理脏的升级;
20、scripts(root-only)
Composer 容许你在组装过程中组装勾子脚本制作,勾子是根据事情的;
21、extra
供 scripts 交易的附加数据信息;
22、bin
特定什么文档务必被作为二进制文件解决的;
23、archive
设定建立包时的选择项,exclude 特性可以设定清除什么文件目录,比如:
{ "archive": { "exclude": ["/foo/bar", "baz", "/*.test", "!/foo/bar/baz"] } }
大量composer有关专业知识,请浏览composer频道:https://www.php.cn/tool/composer/
以上便是分析composer.json中全部特性字段名的详尽具体内容,大量请关心自学java网其他相关文章!
WWW.lllT.neT声明:有的资源来自网络转载,版权归原作者所有,如有侵犯到您的权益请联系邮箱:our333@126.com我们将配合处理!
原文地址:分析composer.json中全部特性字段名发布于2021-12-08 11:16:01