首页 开发工具 composer composer.json文件详解

composer.json文件详解

Aug 03, 2019 pm 05:11 PM
composer json

在当前主流的PHP框架中我们都会发现一个名为composer.json的文件,在下载的composer包中就可以看到composer.json文件,下面由composer使用教程栏目为大家介绍composer.json文件的作用、属性及各个属性的作用。

composer.json文件详解

作用:

composer.json文件定义了您当前项目的依赖项,以及依赖项的一些相关信息

常见属性说明:

1:name

表示包的名称,由作者名称和项目名称组成,使用 / 分割

例如:

yiisoft/yii2-app-basic

包名称可以包含任何字符,包括空格,并且不区分大小写 ( yiisoft/yii2-app-basic 和 Yiisoft/Yii2-app-basic 会被认为是同一个包)。为了简化安装,建议定义一个不包含非字母数字字符或空格的短名称

name这个属性是composer.json文件的必要属性

2:description 

表示包的简短描述,通常这是一行介绍就行

description 这个属性是composer.json文件的必要属性

3:version

表示包的版本

版本的格式必须遵循  X.Y.Z 或 vX.Y.Z,可选后缀 -dev, -patch ( -p ), -alpha ( -a ), -beta ( -b ) 或 -RC, patch, alpha , beta 和 RC 后缀也可以跟一个数字

例如:

1.0.0

1.0.0-dev

version这个属性是composer.json 文件的非必须属性,一般可以省略

4:type 

表示包的类型,默认为库 library

Composer 原生支持以下4种类型:

library: 默认类型,它只需要将文件复制到 vendor 目录。

project: 当前包是一个项目,而不是一个库。例如Yii框架中的composer.json文件的type值九尾project

metapackage: 包含需求并将触发其安装的空包,但不包含文件,并且不会向系统写入任何内容。因此这种安装类型并不需要一个 dist 或 source。

composer-plugin: 一个安装类型为 composer-plugin 的包,它有一个自定义安装类型,可以为其它包提供一个 installler

我们也可以定义一个自定义类型

type这个属性是composer.json文件的非必须属性

5:keywords

表示一组用于搜索与筛选的与包相关的关键字

keywords这个属性是composer.json文件的非必须属性

6:homepage

表示项目网站的 URL 地址

homepage这个属性是composer.json文件的非必须属性

7:readme

表示README 文档的绝对路径

readme这个属性是composer.json文件的非必须属性

8:time

表示包的版本发布时间

必须是 YYYY-MM-DD 或者 YYYY-MM-DD HH:MM:SS 格式

time这个属性是composer.json文件的非必须属性

9:license

表示包的许可证,可以是一个字符串或者是一个字符串数组

最常见的许可证推荐表示法如下:

Apache-2.0
BSD-2-Clause
BSD-3-Clause
BSD-4-Clause
GPL-2.0-only / GPL-2.0-or-later
GPL-3.0-only / GPL-3.0-or-later
LGPL-2.1-only / LGPL-2.1-or-later
LGPL-3.0-only / LGPL-3.0-or-later
MIT
登录后复制

你如果想要知道许可证相关信息可以参考:https://spdx.org/licenses/

license这个属性是composer.json文件的非必须属性,但是建议提供此项信息

10:authors

表示包的作者,这是一个对象数组。

每一个作者对象可以包含以下属性:

name: 作者的名字。通常是真实姓名。

email: 作者的邮件地址。

homepage: 作者个人网站的 URL 地址。

role: 作者在项目中担任的角色(如:开发者或者译者)。

例:

"authors": [
        {
            "name": "huaweichenai",
            "email": "243681093@qq.com",
            "homepage": "https://www.wj0511.com/",
            "role": "Developer"
        }
    ],
登录后复制

authors这个属性是composer.json文件的非必须属性,但是建议提供此项信息

11:support

表示获取对项目支持的信息对象。

对象信息必须包括以下属性:

email: 项目支持 email 地址。

issues: 跟踪问题的 URL 地址。

forum: 论坛 URL 地址。

wiki: Wiki URL 地址。

irc: IRC 聊天频道地址,as irc://server/channel.

source: 网址浏览或下载源。

docs: 文件的 URL 。

rss: RSS 源的 URL 。

例:

"support": {
        "issues": "https://github.com/yiisoft/yii2/issues?state=open",
        "forum": "http://www.yiiframework.com/forum/",
        "wiki": "http://www.yiiframework.com/wiki/",
        "irc": "irc://irc.freenode.net/yii",
        "source": "https://github.com/yiisoft/yii2"
    },
登录后复制

support这个属性是composer.json文件的非必须属性

12:require

表示必须安装的依赖包列表,这些包必须满足条件,否则不会安装

例:

"require": {
        "yiisoft/yii2": "*"
    },
登录后复制

require这个属性是composer.json文件的非必须属性

13:require-dev

表示开发或运行测试时的依赖包列表

require-dev这个属性是composer.json文件的非必须属性

14:autoload

表示PHP 自动加载的映射

支持 PSR-4 和 PSR-0 自动加载,class 映射 和 files 引用。

推荐使用 PSR-4 规范(添加类时,无需重新生成自动加载映射)

例:

"autoload": {
        "psr-4": {
            "huaweichenai\\discern\\": "src"
        }
    }
登录后复制

表示自动加载当前的src目录

autoload这个属性是composer.json文件的非必须属性

15:minimum-stability

这个属性定义了按稳定性过滤包的默认值,默认为stable。所以如果你依赖dev 包,你应该在你的文件中指定。

所有包都将根据稳定性检出相应的版本,那些低于 minimum-stability 设置的版本将被自动忽略。

minimum-stability这个属性是composer.json文件的非必须属性

16:repositories

表示使用自定义的安装源

Composer 默认只使用 packagist 的安装源。通过定义 repositories 你可以从任何其他地方获取包

例:

"repositories": {
        "0": {
            "type": "composer",
            "url": "https://asset-packagist.org"
        },
        "packagist": {
            "type": "composer",
            "url": "https://packagist.phpcomposer.com"
        }
    }
登录后复制

repositories 这个属性是composer.json文件的非必须属性

20:config

表示一组配置选项。它仅用于项目

config属性向有很多的属性,了解config下面的相关属性,参考:https://laravel-china.org/docs/composer/2018/06-config/2087

config属性中有一个常见的属性

process-timeout:请求过程超时设置

config 这个属性是composer.json文件的非必须属性

21:scripts

表示Composer 允许再安装过程的各个部分中执行脚本

script相关信息参考:https://laravel-china.org/docs/composer/2018/scripts/2095

例:

"scripts": {
            //当项目里有 composer.lock 文件的情况下调用 install 命令后执行
        "post-install-cmd": [
            "yii\\composer\\Installer::postInstall"
        ],
        //当 create-project  命令被执行后执行
        "post-create-project-cmd": [
            "yii\\composer\\Installer::postCreateProject",
            "yii\\composer\\Installer::postInstall"
        ]
    },
登录后复制

scripts 这个属性是composer.json文件的非必须属性

22:extra

表示scripts 使用的任意扩展数据

例:

"extra": {
        "yii\\composer\\Installer::postCreateProject": {
            "setPermission": [
                {
                    "runtime": "0777",
                    "web/assets": "0777",
                    "yii": "0755"
                }
            ]
        },
        "yii\\composer\\Installer::postInstall": {
            "generateCookieValidationKey": [
                "config/web.php"
            ]
        }
    },
登录后复制

extra这个属性是composer.json文件的非必须属性

以上是composer.json文件详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS开发网站时,常常会遇到资源文件缓存的问题,特别是当你频繁更新CSS和JavaScript文件时,旧版本的文件可能仍然被浏览器缓存,导致用户无法及时看到最新的更改。这个问题不仅影响用户体验,还会增加开发和调试的难度。最近,我在项目中遇到了类似的困扰,经过一番探索,我找到了wiejeben/craft-laravel-mix这个插件,它完美地解决了我的缓存问题。

提升 Doctrine 实体序列化效率:sidus/doctrine-serializer-bundle 的应用 提升 Doctrine 实体序列化效率:sidus/doctrine-serializer-bundle 的应用 Apr 18, 2025 am 11:42 AM

在处理一个包含大量Doctrine实体的项目时,我遇到了一个棘手的问题:每次序列化和反序列化实体时,性能变得非常低效,导致系统响应时间显着增加。我尝试了多种优化方法,但效果不佳。幸运的是,通过使用sidus/doctrine-serializer-bundle,我成功地解决了这个问题,显着提升了项目的性能。

使用 Composer 解决推荐系统的困境:andres-montanez/recommendations-bundle 的实践 使用 Composer 解决推荐系统的困境:andres-montanez/recommendations-bundle 的实践 Apr 18, 2025 am 11:48 AM

在开发一个电商网站时,我遇到了一个棘手的问题:如何为用户提供个性化的商品推荐。最初,我尝试了一些简单的推荐算法,但效果并不理想,用户的满意度也因此受到影响。为了提升推荐系统的精度和效率,我决定采用更专业的解决方案。最终,我通过Composer安装了andres-montanez/recommendations-bundle,这不仅解决了我的问题,还大大提升了推荐系统的性能。可以通过一下地址学习composer:学习地址

如何使用 Composer 快速搭建 Fecmall 高级项目模板 如何使用 Composer 快速搭建 Fecmall 高级项目模板 Apr 18, 2025 am 11:45 AM

在开发电商平台时,选择合适的框架和工具至关重要。最近我在尝试构建一个功能丰富的电商网站时,遇到了一个棘手的问题:如何快速搭建一个可扩展且功能完善的电商平台。我尝试了多种解决方案,最终选择了Fecmall的高级项目模板(fecmall/fbbcbase-app-advanced)。通过使用Composer,这个过程变得非常简单和高效。可以通过以下地址学习Composer:学习地址

如何使用 Composer 提升 Laravel 应用的安全性:wiebenieuwenhuis/laravel-2fa 库的应用 如何使用 Composer 提升 Laravel 应用的安全性:wiebenieuwenhuis/laravel-2fa 库的应用 Apr 18, 2025 am 11:36 AM

在开发一个Laravel应用时,我遇到了一个常见但棘手的问题:如何提升用户账户的安全性。随着网络攻击的日益复杂,单一的密码保护已经不足以保障用户的数据安全。我尝试了几种方法,但效果都不尽如人意。最终,我通过Composer安装了wiebenieuwenhuis/laravel-2fa库,成功地为我的应用添加了双因素认证(2FA),大大提升了安全性。

如何使用 Composer 解决 JSON Schema 验证问题 如何使用 Composer 解决 JSON Schema 验证问题 Apr 18, 2025 am 11:51 AM

在开发一个基于Symfony的应用程序时,我遇到了一个棘手的问题:如何有效地验证JSON数据格式。最初,我尝试使用手动编写的验证代码,但这不仅复杂,而且容易出错。经过一番探索,我发现了一个名为ptyhard/json-schema-bundle的Composer包,它为我的项目带来了极大的便利和效率。

laravel怎么查看版本号 laravel查看版本号方法 laravel怎么查看版本号 laravel查看版本号方法 Apr 18, 2025 pm 01:00 PM

Laravel框架内置了多种方法来方便地查看其版本号,满足开发者的不同需求。本文将探讨这些方法,包括使用Composer命令行工具、访问.env文件或通过PHP代码获取版本信息。这些方法对于维护和管理Laravel应用程序的版本控制至关重要。

See all articles