Composer不直接管理项目版本号,而是通过composer.json的version字段或Git标签间接定义;正式版本应打符合语义化规范的Git标签(如v2.1.0),Packagist据此自动识别;主项目通常无需设version,除非作为可发布包。

Composer 本身不直接管理项目的“版本号”,而是通过 composer.json 中的 version 字段或 Git 标签间接定义和识别项目版本。真正起作用的是你如何配置、发布和引用它。
在 composer.json 中声明版本号
如果你的项目本身是一个可被其他项目 require 的包(比如开源库),应在 composer.json 中显式写入 version 字段:
- 格式必须符合 语义化版本规范,例如
"version": "1.2.3"或"version": "dev-main" - 该字段仅在项目作为 本地路径仓库 或 未托管到 Packagist 的私有包 时才被 Composer 读取
- 如果项目已发布到 Packagist,Packagist 会忽略你写的
version,改用 Git 标签自动推断版本
用 Git 标签定义正式版本
对大多数 Composer 包来说,版本号实际来自 Git 标签。这是推荐做法:
- 打一个符合语义化格式的轻量标签:
git tag v2.1.0 - 推送标签:
git push origin v2.1.0 - Packagist(或私有仓库如 Satis)会在同步后自动识别该标签为版本
2.1.0 - 其他项目就能通过
"your-vendor/your-package": "^2.1"正常安装
在代码中读取当前版本号
Composer 不提供运行时 API 获取版本,但你可以借助以下方式在 PHP 中访问:
产品简介: 网奇IOS智能订单系统,是网奇公司研发的一款智能在线订单编辑以及管理系统。本系统适合使用在;在线报名、酒店预定、信息反馈、在线订单和在线投诉等等诸多应用上。本系统所有选项字段完全通过后台控制,在线报名系统可以变为在线预定系统,同时可以变为任何其它的系统,里面的栏目字段,可以任意添加、删除、 修改。本系统为网奇公司全国独家首创,顺应网络需求,安装十分便利,上传即可使用。产品特色:
立即学习“PHP免费学习笔记(深入)”;
- 若使用
composer install --no-dev,Composer 会生成vendor/composer/installed.json,其中包含本项目及所有依赖的版本信息 - 更可靠的做法是:在构建流程中把
composer.json的 version 或 Git 当前标签写入一个 PHP 配置文件,例如version.php - 简单脚本示例:
echo json_decode(file_get_contents('composer.json'))->version ?? 'dev';(仅适用于开发环境且version已手动设置)
避免常见误区
几个容易踩坑的地方:
-
composer update不会更新你项目的 version 字段 —— 它只更新依赖 - 修改
composer.json中的version后,不会自动影响 Packagist,必须打新标签并推送 - 不要在
version字段写dev-master这类分支别名;分支别名应放在branch-alias下(用于开发版映射) - 主项目(非库)通常不需要设
version,除非你要把它当作包发布
基本上就这些。版本号不是 Composer “管理”的对象,而是你通过 Git 标签 + composer.json 协同约定的结果。










