taskScss([ * 'scss/default.scss' => 'css/default.css' * ]) * ->importDir('assets/styles') * ->run(); * ?> * ``` * * Use the following scss compiler in your project: * * ``` * "leafo/scssphp": "~0.1", * ``` * * You can implement additional compilers by extending this task and adding a * method named after them and overloading the scssCompilers() method to * inject the name there. */ class Scss extends CssPreprocessor { const FORMAT_NAME = 'scss'; /** * @var string[] */ protected $compilers = [ 'scssphp', // https://github.com/leafo/scssphp ]; /** * scssphp compiler * @link https://github.com/leafo/scssphp * * @param string $file * * @return string */ protected function scssphp($file) { if (!class_exists('\Leafo\ScssPhp\Compiler')) { return Result::errorMissingPackage($this, 'scssphp', 'leafo/scssphp'); } $scssCode = file_get_contents($file); $scss = new \Leafo\ScssPhp\Compiler(); // set options for the scssphp compiler if (isset($this->compilerOptions['importDirs'])) { $scss->setImportPaths($this->compilerOptions['importDirs']); } if (isset($this->compilerOptions['formatter'])) { $scss->setFormatter($this->compilerOptions['formatter']); } return $scss->compile($scssCode); } /** * Sets the formatter for scssphp * * The method setFormatter($formatterName) sets the current formatter to $formatterName, * the name of a class as a string that implements the formatting interface. See the source * for Leafo\ScssPhp\Formatter\Expanded for an example. * * Five formatters are included with leafo/scssphp: * - Leafo\ScssPhp\Formatter\Expanded * - Leafo\ScssPhp\Formatter\Nested (default) * - Leafo\ScssPhp\Formatter\Compressed * - Leafo\ScssPhp\Formatter\Compact * - Leafo\ScssPhp\Formatter\Crunched * * @link http://leafo.github.io/scssphp/docs/#output-formatting * * @param string $formatterName * * @return $this */ public function setFormatter($formatterName) { return parent::setFormatter($formatterName); } }