molovo/phake

受 Make、Rake 等启发的 PHP 任务运行器。

v1.1.4 2016-06-17 12:37 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:37 UTC


README

Join the chat at https://gitter.im/molovo/phake

受 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