Extended Asset Manager Compiles .less file(s) on-the-fly and publishes output .css file. It uses lessphp by Leaf Corcoran - LESS PHP compiler and parser.
The main feature of this extention is what you can publish .less files with assetManager the same way as .css files. EAssetManager automatically track all .less files for changes and recompiles output .css file on-the-fly (this feature can be disabled in production mode).
Installation ¶
- Copy EAssetManager.php to /protected/extensions/ directory
- Download the latest version of lessphp from http://leafo.net/lessphp and put lessc.inc.php file under /protected/extensions/EAssetManager/ directory
- Add or replace the assetManager component in /protected/config/main.php like that:
'components'=>array(
...
'assetManager'=>array(
'class'=>'EAssetManager',
'lessCompile'=>true,
'lessCompiledPath'=>'application.assets.css',
'lessFormatter'=>'compressed',
'lessForceCompile'=>false,
),
...
),
See code of EAssetManager.php to read description of public properties.
- CHMOD 'lessCompiledPath' directory to 777 in order to create new files there by EAssetManager.
- Optional: enable Yii caching. Otherwise, EAssetManager will create (or use existing) directory /protected/runtime/cache/ and store cache data there. You can override this path by setting public property 'cachePath'.
Usage ¶
Just publish .less file with assetManager like that:
$css = CHtml::asset(Yii::app()->basePath.'/vendors/bootstrap/bootstrap.less');
That's all :)
Also it might be useful to pre-compile .less files. For example, to make command which compiles .less files in background. In this case you can use "lessCompile" method:
Yii::app()->assetManager->lessCompile(Yii::app()->basePath.'/vendors/bootstrap/bootstrap.less');
Output .css file will be stored under 'lessCompiledPath' directory. And then add already compiled file in your application:
$css = CHtml::asset(Yii::app()->basePath.'/assets/css/bootstrap.css');
or
$css = CHtml::asset(Yii::app()->assetManager->lessCompiledPath.'/bootstrap.css');
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.