molovo / phake
受 Make、Rake 等启发的 PHP 任务运行器。
Requires
- molovo/accidents: ^0.1
- molovo/graphite: ^0.1
README
受 Make、Rake 等启发的 PHP 任务运行器。
安装和用法
全局安装 phake
composer global require molovo/phake # Ensure ~/.composer/vendor/bin is in your path, then in a directory # with a Phakefile, run: phake task
按项目安装
composer require molovo/phake vendor/bin/phake task
安装 ZSH 完成脚本
将文件 phake.zsh-completion
重命名为 _phake
,并将其移动到你的 $fpath
中的某个位置。通常 /usr/local/share/zsh/site-functions/
是一个好选择。
用法
默认任务
在项目的根目录下创建一个名为 Phakefile
的文件。这是一个简单的 PHP 文件。你应该定义的第一个任务是名为 default
的任务。当你不带任何参数运行 phake
时,会执行这个任务。
目前,我们将使用它来通过传递一个字符串来执行一个简单的 shell 命令。
<?php task('default', 'echo "Hello World!"');
现在你可以在与你的 Phakefile
相同的目录下运行 phake
,你将在控制台上看到打印出 Hello World!
。
任务命名
第一个参数是任务的名称。
<?php task('my_awesome_task', 'echo "Doing awesome things..."');
要运行该任务,请运行 phake my_awesome_task
。
多个命令
phake 中的大多数任务将执行多个简单的 shell 命令。为此,将命令数组作为第二个参数传递。
<?php task('test', [ 'echo "Starting Tests"', './my_tests.sh', 'echo "Tests finished."' ]);
使用闭包
任务也可以包含 PHP 闭包,这样你就可以在任务中包含 PHP 逻辑。Phake 使用 Composer 进行自动加载,因此你可以在任务中访问整个项目的 PHP 代码。
<?php task('php_example', function () { my_php_function(); // Your PHP code is available here });
运行其他任务
如果你使用 PHP 回调方法,你可以在任务的回调中调用其他任务。只需使用 run()
辅助器。
<?php task('task_one', 'echo "Hello World!"'); task('task_two', function () { run('task_one'); });
组
可以使用 group()
辅助器定义组。只需在组的闭包中使用 task()
辅助器,任务将自动分配到该组。
<?php group('my_group', function() { task('task_one', 'echo "Task One!"'); task('task_two', 'echo "Task Two!"'); })
你可以通过调用 phake group:task
来运行单个任务,或通过调用 phake group
来运行组中的所有任务。
phake my_group # Output: # Task One! # Task Two! phake my_group:task_one # Output: # Task One!
组可以无限嵌套,运行一个组将运行该组及其所有任务和组中的任务。
<?php group('group', function() { task('first_task', 'echo "I\'m in the parent group"'); group('subgroup', function() { task('second_task', 'echo "I\'m in the subgroup"'); }); });
phake group # Ouptut: # I'm in the parent group # I'm in the subgroup
运行多个任务
phake
的每个参数都是一个任务,可以通过将它们全部传递给 phake 来运行多个任务。基于上面的组示例,这会给 phake group
相同的结果。
phake group:first_task group:subgroup:second_task # Ouptut: # I'm in the parent group # I'm in the subgroup
选项
默认情况下,phake 在调用它的目录中寻找 Phakefile
。要使用自定义目录,请传递路径到 --dir
(-d
) 选项。
phake --dir=/path/to/root phake -d/path/to/root
要使用不同的文件名,或目录之外的 Phakefile,请使用 --phakefile
(-f
) 选项。
phake --phakefile=/your/custom/file phake -f/your/custom/file
要列出 Phakefile 中的所有任务或组,请使用 --tasks
或 --groups
选项。
phake --tasks phake --groups
要隐藏任务产生的任何输出,请使用 --quiet
(-q
) 选项。
phake --quiet