elephfront/robo-import-js

Robo任务,用于将JS文件内容导入另一个文件。

安装次数: 21

依赖: 1

建议者: 0

安全: 0

星级: 1

关注者: 2

分支: 0

开放问题: 0

类型:robo-tasks

1.2.1 2017-07-11 11:31 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:13:45 UTC


README

Software License Build Status Codecov

这个Robo任务为JavaScript文件引入了一种导入方法。可以将其视为PHP的include函数或JavaScript文件中的SASS文件的@import语句的等价物。

要求

  • PHP >= 7.1.0
  • Robo

安装

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

安装composer包的推荐方法是

composer require elephfront/robo-import-js

使用任务

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

use Elephfront\RoboImportJs\Task\Loader\LoadImportJavascriptTasksTrait;

class RoboFile extends Tasks
{

    use LoadImportJavascriptTasksTrait;
    
    public function concatJavascript()
    {
        $this
            ->taskImportJavascript([
                'assets/js/main.js' => 'assets/min/js/main.min.js',
                'assets/js/home.js' => 'assets/min/js/home.min.js',
            ])
            ->run();
    }
}

taskImportJavascript()方法接受的唯一参数是一个数组($destinationsMap),该数组将源文件映射到目标文件:它将加载assets/js/main.js,执行其魔法,并将最终内容放在assets/min/js/main.min.js中,并对所有其他文件执行相同的操作。

最终,您将根据映射数组中的每个条目获得一个文件。

在您的JS文件中使用假roboimport()方法进行导入

// in the home.js file
roboimport('libs/jquery');
roboimport('plugins/slider.min.js');

var slider = $('.slider').initSlider();

当读取home.js文件的内容时,任务将用链接文件的内容替换roboimport()语句。

如果您想拥有非常“页面特定”的生产JS文件,这将特别有用。

请注意,任务可以读取嵌套的roboimport()语句,这意味着导入的文件本身可以导入其他文件。

链式状态支持

Robo包含一个称为链式状态的概念,它允许需要协作的任务按顺序执行,并将任务执行的状态传递给下一个任务。例如,如果您正在管理资源文件,您将有一个将SCSS编译为CSS的任务,然后是另一个将结果压缩的任务。第一个任务可以将其工作状态传递给下一个任务,而无需在单独的序列中调用两个方法。

robo-import-js任务与此功能兼容。

您需要做的只是使前一个任务返回robo-import-js任务应该操作的内容,使用Robo\Result::success()Robo\Result::error()调用中的data参数。传递的data应该具有以下格式

$data = [
    'path/to/source/file' => [
        'js' => '// Some javascript code',
        'destination' => 'path/to/destination/file
    ]
];

反过来,当robo-import-js任务完成时,它将以相同的格式将工作结果传递给下一个任务。

防止结果写入

默认情况下,robo-import-js任务将工作结果写入在$destinationsMap参数中传递的目标文件(s)。如果robo-import-js任务不是序列中的最后一个,您可以使用disableWriteFile()方法禁用文件写入。文件将被处理,但结果不会持久化,仅传递给响应

$this
    ->taskImportJavascript([
        'assets/js/main.js' => 'assets/min/main.min.js',
        'assets/js/home.js' => 'assets/min/home.min.js',
    ])
        ->disableWriteFile()
    ->someOtherTask()
    ->run();

贡献

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

编码规范

该仓库遵循 PSR-2 标准。

许可证

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