Assets Tasks
ImageMinify
Minifies images.
When the task is run without any specified minifier it will compress the images based on the extension.
$this->taskImageMinify('assets/images/*')
->to('dist/images/')
->run();This will use the following minifiers based in the extension:
- PNG: optipng
- GIF: gifsicle
- JPG, JPEG: jpegtran
- SVG: svgo
When the required minifier is not installed on the system the task will try to download it from the imagemin repository into a local directory. This directory is vendor/bin/ by default and may be changed:
$this->taskImageMinify('assets/images/*')
->setExecutableDir('/tmp/imagemin/bin/)
->to('dist/images/')
->run();When the minifier is specified the task will use that for all the input files. In that case it is useful to filter the files with the extension:
$this->taskImageMinify('assets/images/*.png')
->to('dist/images/')
->minifier('pngcrush');
->run();The task supports the following minifiers:
- optipng
- pngquant
- advpng
- pngout
- zopflipng
- pngcrush
- gifsicle
- jpegoptim
- jpeg-recompress
- jpegtran
- svgo (only minification, no downloading)
You can also specifiy extra options for the minifiers:
$this->taskImageMinify('assets/images/*.jpg')
->to('dist/images/')
->minifier('jpegtran', ['-progressive' => null, '-copy' => 'none'])
->run();This will execute as: jpegtran -copy none -progressive -optimize -outfile "dist/images/test.jpg" "/var/www/test/assets/images/test.jpg"
setExecutableDir($directory)Sets the target directory for executables (vendor/bin/by default)to($target)Sets the target directory where the files will be copied to.minifier($minifier, array $options = Array ( ) )Sets the minifier.setOutput($output)Sets the Console Output.
Less
Compiles less files.
<?php
$this->taskLess([
'less/default.less' => 'css/default.css'
])
->run();
?>Use one of both less compilers in your project:
"leafo/lessphp": "~0.5",
"oyejorge/less.php": "~1.5"Specify directory (string or array) for less imports lookup:
<?php
$this->taskLess([
'less/default.less' => 'css/default.css'
])
->importDir('less')
->compiler('lessphp')
->run();
?>You can implement additional compilers by extending this task and adding a method named after them and overloading the lessCompilers() method to inject the name there.
importDir($dirs)Sets import directoriesaddImportPath($dir)Adds import directorysetImportPaths($dirs)Sets import directoriessetFormatter($formatterName)*param string$formatterNamecompiler($compiler, array $options = Array ( ) )Sets the compiler.setOutput($output)Sets the Console Output.
Minify
Minifies an asset file (CSS or JS).
<?php
$this->taskMinify('web/assets/theme.css')
->run()
?>Please install additional packages to use this task:
composer require patchwork/jsqueeze:^2.0
composer require natxet/cssmin:^3.0to($dst)Sets destination. Tries to guess type from it.type($type)Sets type with validation.singleLine($singleLine)Single line option for the JS minimisation.keepImportantComments($keepImportantComments)keepImportantComments option for the JS minimisation.specialVarRx($specialVarRx)Set specialVarRx option for the JS minimisation.__toString()@return stringsetOutput($output)Sets the Console Output.
Scss
Compiles scss files.
<?php
$this->taskScss([
'scss/default.scss' => 'css/default.css'
])
->importDir('assets/styles')
->run();
?>Use the following scss compiler in your project:
"scssphp/scssphp ": "~1.0.0",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.
setFormatter($formatterName)Sets the formatter for scssphpimportDir($dirs)Sets import directoriesaddImportPath($dir)Adds import directorysetImportPaths($dirs)Sets import directoriescompiler($compiler, array $options = Array ( ) )Sets the compiler.setOutput($output)Sets the Console Output.