搜索
首页开发工具composer解析composer.json中所有属性字段

下面由composer使用教程栏目给大家介绍解析composer.json中所有属性字段,希望对需要的朋友有所帮助!

解析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中文网其他相关文章!

声明
本文转载于:csdn。如有侵权,请联系admin@php.cn删除
使用 Composer 解决 Yii2 框架中的图片上传问题使用 Composer 解决 Yii2 框架中的图片上传问题Apr 18, 2025 am 10:27 AM

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

使用 Composer 简化 SkeekS CMS 项目部署:我的实际经验使用 Composer 简化 SkeekS CMS 项目部署:我的实际经验Apr 18, 2025 am 10:24 AM

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

使用 Composer 解决 Magento 2 自定义横幅管理:Magepotato/module-banners 库的实践应用使用 Composer 解决 Magento 2 自定义横幅管理:Magepotato/module-banners 库的实践应用Apr 18, 2025 am 10:21 AM

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

使用 Composer 简化短信发送:jakharbek/yii2-sms 库的实际应用使用 Composer 简化短信发送:jakharbek/yii2-sms 库的实际应用Apr 18, 2025 am 10:18 AM

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

如何使用 Composer 解决 Docker API 版本问题如何使用 Composer 解决 Docker API 版本问题Apr 18, 2025 am 10:15 AM

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

使用 Composer 解决 PHP 开发中的常见问题:MOC Uteis 库的实用指南使用 Composer 解决 PHP 开发中的常见问题:MOC Uteis 库的实用指南Apr 18, 2025 am 10:12 AM

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

如何利用 Composer 简化 Laravel API 开发:以 code4mk/kapi 为例如何利用 Composer 简化 Laravel API 开发:以 code4mk/kapi 为例Apr 18, 2025 am 10:09 AM

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

如何利用 Composer 实现 AdSense 数据的实时推送至 La Metric 设备如何利用 Composer 实现 AdSense 数据的实时推送至 La Metric 设备Apr 18, 2025 am 10:06 AM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

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

SublimeText3 英文版

SublimeText3 英文版

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

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具