elephfront / robo-import-js
Robo任务,用于将JS文件内容导入另一个文件。
Requires
- php: >=7.1.0
- consolidation/robo: *
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-15 03:13:45 UTC
README
这个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 文件。