答案:通过解析composer.json文件可动态获取项目版本号。在自定义PHP脚本中读取version字段,如scripts/get-version.php,再通过composer.json的scripts配置命令调用,实现版本显示或构建归档等操作,需注意路径正确性及version字段存在与否,可结合Git标签作为回退方案。

在 Composer 脚本中动态获取项目版本号,可以通过读取 composer.json 文件中的 version 字段来实现。虽然 Composer 本身没有直接提供运行时获取当前项目版本的 API,但你可以通过 PHP 脚本在自定义脚本中解析 composer.json 来拿到版本信息。
你可以在项目的根目录下创建一个 PHP 脚本(例如 scripts/VersionReader.php),用于读取 composer.json 中的版本号,并在 Composer 脚本中调用它。
示例代码:
// scripts/get-version.php <?php $composer = json_decode(file_get_contents(__DIR__ . '/../composer.json'), true); $version = $composer['version'] ?? 'undefined'; echo "Current project version: $version\n";
将上面的脚本注册为 Composer 的自定义命令:
{
"scripts": {
"show-version": "php scripts/get-version.php"
}
}然后运行:
composer show-version
输出类似:
Current project version: 1.2.3
如果你需要在构建、打包或部署脚本中使用版本号(比如生成带版本的压缩包),可以这样扩展脚本:
// scripts/build.php
<?php
$composer = json_decode(file_get_contents(__DIR__ . '/../composer.json'), true);
$version = $composer['version'] ?? 'dev';
// 示例:创建带版本号的归档
$archiveName = "myapp-v{$version}.tar.gz";
echo "Creating archive: $archiveName\n";
// shell_exec("tar -czf $archiveName ...");并在 composer.json 中添加:
```json "scripts": { "build": "php scripts/build.php" } ```运行 composer build 即可使用动态版本号。
version 字段,否则需提供默认值(如 dev-master 或从 Git 标签推断)。exec('git describe --tags'))作为回退方案。基本上就这些,不复杂但容易忽略路径和字段是否存在。只要读取 composer.json 就能灵活拿到版本信息。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号