1.3.1 2018-08-17 18:44 UTC

This package is auto-updated.

Last update: 2024-09-12 04:31:40 UTC


README

现代简单的PHP任务执行器,受Gulp和Rake启发,旨在自动化常见任务,包括跨平台脚本的编写、处理资源(less、sass、压缩)、运行测试、执行守护进程(和工作者)、监视文件系统更改、使用sftp/ssh/docker进行部署

Gitter Latest Stable Version Latest Unstable Version Total Downloads PHP 7 ready License

Build Status Windows CI Scrutinizer Code Quality Dependency Status

  • 处理跨平台脚本
  • 处理资源(less、sass、压缩)
  • 运行测试
  • 执行守护进程(和工作者)
  • 监视文件系统更改
  • 使用sftp/ssh/docker进行部署

安装

Phar

下载robo.phar >

wget http://robo.li/robo.phar

要全局安装,请将robo.phar放入/usr/bin。在OSX 10.11+中使用/usr/local/bin/

chmod +x robo.phar && sudo mv robo.phar /usr/bin/robo

OSX 10.11+

chmod +x robo.phar && sudo mv robo.phar /usr/local/bin/robo

现在您可以使用它就像使用robo一样。

Composer

  • 运行 composer require consolidation/robo:~1
  • 使用 vendor/bin/robo 来执行Robo任务。

用法

所有任务均定义为RoboFile.php中的public methods。可以通过运行robo来创建它。所有以task前缀开始的特质中的受保护方法都是任务,可以在您的任务中进行配置和执行。

示例

通过查看它的自己的RoboFileCodeception项目的RoboFile来通过示例学习Robo是最好的方式。在examples/RoboFile.php中也有一些基本的示例命令。

以下是一些示例片段

使用本地服务器和selenium服务器启动运行验收测试。

<?php
class RoboFile extends \Robo\Tasks
{

    function testAcceptance($seleniumPath = '~/selenium-server-standalone-2.39.0.jar')
    {
       // launches PHP server on port 8000 for web dir
       // server will be executed in background and stopped in the end
       $this->taskServer(8000)
            ->background()
            ->dir('web')
            ->run();

       // running Selenium server in background
        $this->taskExec('java -jar ' . $seleniumPath)
            ->background()
            ->run();

        // loading Symfony Command and running with passed argument
        $this->taskSymfonyCommand(new \Codeception\Command\Run('run'))
            ->arg('suite','acceptance')
            ->run();
    }
}

如果您执行robo,您将看到此任务以名称test:acceptance添加到可用任务列表中。要执行它,您应该运行robo test:acceptance。您可以通过传递新的路径作为参数来更改selenium服务器的路径。

robo test:acceptance "C:\Downloads\selenium.jar"

使用watch任务,您可以使用它来运行测试或构建资源。

<?php
class RoboFile extends \Robo\Tasks {

    function watchComposer()
    {
        // when composer.json changes `composer update` will be executed
        $this->taskWatch()->monitor('composer.json', function() {
            $this->taskComposerUpdate()->run();
        })->run();
    }
}

清理日志和缓存

<?php
class RoboFile extends \Robo\Tasks
{
    public function clean()
    {
        $this->taskCleanDir([
            'app/cache',
            'app/logs'
        ])->run();

        $this->taskDeleteDir([
            'web/assets/tmp_uploads',
        ])->run();
    }
}

此任务清理app/cacheapp/logs目录(忽略.gitignore和.gitkeep文件)。可以通过运行来执行

robo clean

创建Phar存档

function buildPhar()
{
    $files = Finder::create()->ignoreVCS(true)->files()->name('*.php')->in(__DIR__);
    $packer = $this->taskPackPhar('robo.phar');
    foreach ($files as $file) {
        $packer->addFile($file->getRelativePathname(), $file->getRealPath());
    }
    $packer->addFile('robo','robo')
        ->executable('robo')
        ->run();
}

我们需要更多的任务!

创建您自己的任务,并通过Pull Requests发送它们,或者在Packagist上创建带有"type": "robo-tasks"composer.json的包(在Packagist上)

致谢

关注@robo_php以获取更新。

Consolidation团队和我们的杰出的贡献者带来。

许可

MIT