Composer支持通过composer run script -- --args方式向脚本透传参数,PHP脚本可用$argv接收并解析,外部命令如Node.js或Python脚本同样适用,需注意使用--分隔符、避免空格、提供默认值和参数校验,提升脚本灵活性与健壮性。

在使用 Composer 时,我们经常需要通过自定义脚本(scripts)来执行一些自动化任务,比如运行测试、构建项目或清理缓存。但有时这些脚本本身也需要接收参数来控制行为。幸运的是,Composer 支持将命令行参数透传给脚本,实现更灵活的调用方式。
理解 Composer 脚本参数传递机制
Composer 的脚本(scripts)是定义在 composer.json 中的命令别名。当你运行 composer run
关键点是:只有使用 composer run 并配合 -- 才能正确透传参数。例如:
- composer run build -- --env=prod --minify
- composer run test -- --filter=UnitTests
这里的 --env=prod 和 --minify 就会被脚本接收到。
在脚本中获取透传参数
如果脚本是一个 PHP 文件,你可以通过 $argv 获取所有传入的参数。注意 $argv[0] 是脚本名称,实际参数从 $argv[1] 开始。
假设你有这样一个脚本文件 scripts/build.php:
// scripts/build.phparray_shift($argv); // 移除脚本名
$env = 'dev';
$minify = false;
foreach ($argv as $arg) {
if (str_starts_with($arg, '--env=')) {
$env = substr($arg, 6);
} elseif ($arg === '--minify') {
$minify = true;
}
}
echo "Building for environment: $env\n";
if ($minify) {
echo "Minification enabled.\n";
}
然后在 composer.json 中注册脚本:
标签: 命令行参数 php python js node.js json node composer python脚本 php脚
还木有评论哦,快来抢沙发吧~