elephfront / robo-sass
Robo 任务用于将 SASS 文件编译成 CSS 文件。
Requires
- php: >=7.1.0
- ext-sass: *
- consolidation/robo: *
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-15 04:13:03 UTC
README
此 Robo 任务执行 SASS 文件的编译。
此任务使用 absalomedia/sassphp PHP 扩展进行编译。
要求
- PHP >= 7.1.0
- Robo
- absalomedia/sassphp PHP 扩展。
安装
您可以使用 composer 安装此 Robo 任务。
安装 composer 包的推荐方法是
composer require elephfront/robo-sass
安装扩展
要安装扩展,您需要按照以下步骤操作
git clone git://github.com/absalomedia/sassphp`
cd sassphp
git submodule init
git submodule update
php install.php
make test
make install
一旦扩展已安装,您需要更新您的 php.ini 文件(或添加一个新配置文件,让 php.ini 去寻找以加载额外的配置设置)文件,通过添加以下行来在您的 PHP 设置中安装扩展
extension=sass.so
使用任务
您可以使用 LoadSassTaskTrait trait 在您的 RoboFile 中加载任务
use Elephfront\RoboSass\Task\Loader\LoadSassTaskTrait; class RoboFile extends Tasks { use LoadSassTaskTrait; public function compileSass() { $this ->taskSass([ 'assets/scss/main.scss' => 'assets/min/css/main.min.css', 'assets/scss/home.scss' => 'assets/min/css/home.min.css', ]) ->run(); } }
taskSass() 方法仅接受一个数组($destinationsMap),该数组将源文件映射到目标文件:它将加载 assets/scss/main.scss,执行其魔法,并将最终内容放入 assets/min/css/main.min.css,并为所有其他文件执行相同的操作。
链式状态支持
Robo 包含一个称为 链式状态 的概念,它允许需要协同工作的任务按顺序执行,并将任务执行的进度状态传递给下一个任务。例如,如果您正在管理资产文件,您将有一个将 SCSS 编译为 CSS 的任务,然后是另一个压缩结果的任务。第一个任务可以将其工作的状态传递给下一个任务,而无需分别调用两个方法。
robo-sass 任务与此功能兼容。
您只需使用 Robo\Result::success() 或 Robo\Result::error() 调用的 data 参数使前一个任务返回 robo-sass 任务应操作的内容。传递的 data 应具有以下格式
$data = [ 'path/to/source/file' => [ 'css' => '// Some (S)CSS code', 'destination' => 'path/to/destination/file ] ];
反过来,当 robo-sass 任务完成后,它将以相同的格式将工作的结果传递给下一个任务。
防止结果写入
默认情况下,robo-sass 任务将工作的结果写入 $destinationsMap 参数中传递的目标文件。如果 robo-sass 任务不是序列中的最后一个任务,您可以使用 disableWriteFile() 方法禁用文件写入。文件将被处理,但结果不会持久化,只传递给响应。
$this ->taskCssMinify([ 'assets/scss/main.css' => 'assets/min/css/main.min.css', 'assets/scss/home.css' => 'assets/min/css/home.min.css', ]) ->disableWriteFile() ->someOtherTask() ->run();
贡献
如果您发现错误或想提出功能请求,请使用 GitHub 问题跟踪器。如果您想提交修复或功能,请分支存储库并 提交拉取请求。
编码标准
此存储库遵循 PSR-2 标准。
许可证
版权(c)2017,Yves Piquel,许可协议为 MIT 许可证。请参阅 LICENSE.txt 文件。