composer.json文件详解
在当前主流的PHP框架中我们都会发现一个名为composer.json的文件,在下载的composer包中就可以看到composer.json文件,下面由composer使用教程栏目为大家介绍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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

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

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

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

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

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

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

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

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

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

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