elephfront/robo-live-reload

当用作模板构建器时,Robo任务运行器的实时刷新机制

1.0.0 2017-08-09 06:45 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:20:52 UTC


README

Software License Build Status Codecov

当使用Elephfront时,此Robo任务启动一个实时刷新服务器。

如果您使用基础的Elephfront骨架,当您启动serve命令时,它将会启动。每当您编辑一个文件时,它将触发相关命令,并触发连接到Elephfront服务器的浏览器刷新。例如,如果您编辑一个SASS文件,它将编译SASS源到CSS,压缩结果,并在您的浏览器中自动触发刷新。

实时刷新服务器由使用WebSocket服务器编译的ratchetphp/Ratchet提供动力。

当然,您可以在Elephfront项目之外使用它。

要求

  • PHP >= 7.1.0
  • Robo

安装

您可以使用composer安装此Robo任务。

安装composer包的推荐方法是

composer require elephfront/robo-live-reload

实现

为了工作,此任务需要两件事

  • 启动一个实时刷新服务器:这将在bin目录中的elephfront-robo-live-reload文件中完成
  • 一个javascript文件,它将连接您的页面到实时刷新服务器,并监听将强制浏览器刷新的消息。您需要将此文件(手动或自动)包含在您的HTML页面中。如果您使用Elephfront项目骨架,此文件将由路由器在页面末尾自动添加。

使用任务

您可以使用LoadLiveReloadTaskTrait特质在您的RoboFile中加载任务

use Elephfront\RoboLiveReload\Task\Loader\LoadLiveReloadTaskTrait;

class RoboFile extends Tasks
{

    use LoadLiveReloadTaskTrait;
    
    public function someTask()
    {
        $this
            ->taskLiveReload()
            ->run();
    }
}

LiveReload任务有一些实用方法,这将赋予您自定义启动的服务的功能。

host()

允许您更改服务器托管的主机。默认:127.0.0.1

port()

允许您更改服务器托管上的端口。默认:22222

bin()

允许您更改启动实时刷新服务器的脚本所在的bin路径。默认:vendor/bin

jsPath()

允许您更改包含使浏览器监听实时刷新服务器并强制刷新所需的javascript文件的路径。默认情况下,它将将其放在Elephfront项目构建目录预期的位置:build/system/LiveReload/assets/js/livereload.js。根据您的项目设置,您可能需要自定义此值。

通知实时刷新服务器

要向实时刷新服务器发送消息以便它可以将它传播到浏览器并触发刷新,您可以使用任务的sendReloadMessage()

use Elephfront\RoboLiveReload\Task\Loader\LoadLiveReloadTaskTrait;

class RoboFile extends Tasks
{

    use LoadLiveReloadTaskTrait;
    
    public function someTask()
    {
        $this
            ->taskLiveReload()
            ->run();
            
        // Further down...
        $this
            ->taskLiveReload()
            ->sendReloadMessage();
    }
}

这将向实时刷新服务器发送“刷新”消息。如果您加载任务创建的livereload.js文件,当收到此消息时,您的浏览器将自动刷新。
通常,当使用“监视”行为时,您将使用此方法,以便在监视处理程序执行后触发刷新。

如果您想发送其他消息以扩展实时刷新服务器的行为,您可以通过使用getWsClient()方法访问WebSocket客户端并发送您想要的消息来做到这一点。

use Elephfront\RoboLiveReload\Task\Loader\LoadLiveReloadTaskTrait;

class RoboFile extends Tasks
{

    use LoadLiveReloadTaskTrait;
    
    public function someTask()
    {
        $this
            ->taskLiveReload()
            ->run();
            
        // Further down...
        $this
            ->taskLiveReload()
            ->getWsClient()
            ->send('your-message');
    }
}

贡献

如果在您发现错误或想要请求新功能,请使用GitHub问题追踪器。如果您想提交修复或新功能,请复制仓库并提交拉取请求

编码规范

此仓库遵循PSR-2标准。

许可证

版权所有 (c) 2017, Yves Piquel,并许可在MIT许可证下。请参阅LICENSE.txt文件。