下面由composer使用教程栏目给大家介绍解析composer.json中所有属性字段,希望对需要的朋友有所帮助!
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
如果你确定需要在任何请求中都加载某些文件,你可以使用 files 自动加载机制。对于那些包中有些 PHP 函数但不能自动加载时特别有用。例如:
{ "autoload": { "files": ["src/MyLibrary/functions.php"] } }
14、include-path
(将被弃用,它的功能由 autoload 代替。其实就是设置 include_path,可选)
15、target-dir
指定安装目标路径。
如果包的根目录是在命名空间下,自动加载就不正确了,所以才有 target-dir 来解决这个问题。
Symfony 就是个例子。它由很多组件包组成。Yaml 组件是在
Symfony\Component\Yaml
命名空间下的,它的根目录是 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中所有属性字段的详细内容。更多信息请关注PHP中文网其他相关文章!

在开发基于Yii2框架的应用程序时,我遇到了一个常见但棘手的问题:如何高效地处理图片上传。用户常常需要上传各种格式和大小的图片,而我需要确保这些图片能被正确地处理和存储。尝试了多种方法后,我发现sergks/yii2-image-behavior这个扩展库能够完美地解决这个问题。

在最近的一次项目中,我需要快速部署一个基于SkeekSCMS的网站。由于时间紧迫,我必须找到一个高效的方法来完成这一任务。在尝试了几种不同的方法后,我发现使用Composer不仅简化了整个过程,还极大地提高了部署的效率。可以通过一下地址学习composer:学习地址

在最近的一个Magento2项目中,我遇到了一个挑战:需要在电商平台上灵活地管理和展示横幅广告。传统的横幅管理方式效率低下,且无法满足我们对REST和GraphQLAPI支持的需求。为了解决这个问题,我开始寻找一种高效且易于集成的解决方案,最终找到了Magepotato/module-banners这个库,它不仅解决了我的问题,还带来了意想不到的便利。

在开发一个需要频繁发送短信的Yii2项目时,我遇到了一个挑战:如何高效地管理不同的短信服务提供商(SMSproviders)并确保发送过程的可靠性和可扩展性。我尝试了多种解决方案,但都无法满足我的需求,直到我发现了jakharbek/yii2-sms这个库。它不仅解决了我的问题,还为项目带来了极大的便利。

在开发一个与Docker集成的PHP项目时,我遇到了一个棘手的问题:由于DockerAPI的版本更新,我的项目出现了兼容性问题。最初使用的DockerAPI版本是1.35,但Docker升级到了1.39,我的项目无法正常运行。我尝试了多种方法来解决这个问题,最终通过Composer找到了一个有效的解决方案。

在开发PHP项目时,我们经常会遇到一些重复的任务和复杂的流程,这些问题不仅耗费时间,还会影响开发效率。最近,我在开发一个项目时遇到了这样的困扰:需要频繁处理一些常见的开发任务,如字符串操作、日期处理等。虽然我尝试了多种方法,但始终感觉不够高效和简便。幸运的是,我发现了MOCUteis这个库,它不仅简化了开发流程,还大大提升了我的工作效率。

在开发LaravelAPI时,常会遇到权限管理、OAuth认证等复杂问题。我曾在一个项目中面临这样的挑战:需要快速搭建一个安全且易用的API系统。经过一番探索,我发现了code4mk/kapi这个库,它利用Composer轻松解决了我的问题。可以通过以下地址学习Composer:学习地址

在项目开发过程中,我们经常需要将数据实时推送至智能设备,以提供用户更好的体验。最近,我在尝试将GoogleAdSense的数据实时推送至LaMetric设备时,遇到了诸多挑战。传统的实现方式复杂且难以维护,直到我发现了dejurin/lametric-adsense这个库,通过Composer轻松解决了这个问题。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3汉化版
中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具