Mojolicious::Plugin::AssetPack - Compress and convert css, less, sass and javascript files
0.01
In your application:
use Mojolicious::Lite; plugin AssetPack => { rebuild => 1 }; # add a preprocessor app->asset->preprocessors->add(js => sub { my($assetpack, $text, $file) = @_; $$text = "// yikes!\n" if 5 < rand 10; }); # define assets: $moniker => @real_assets app->asset('app.js' => '/js/foo.js', '/js/bar.js'); app->asset('app.css' => '/css/foo.less', '/css/bar.scss', '/css/main.css'); app->start;
In your template:
%= asset 'app.js' %= asset 'app.css'
See also "register".
This plugin will compress scss, less, css and javascript with the help of external applications on startup. The result will be one file with all the sources combined. This file is stored in "Packed directory".
This is done using "process".
The actual file requested will also contain the timestamp when this server was started. This is to help refreshing cache on change. Example:
<script src="/packed/app.1379243728.js">
This plugin will expand the input files to multiple script or link tags which makes debugging and development easier.
This is done using "expand".
TIP! Make morbo watch your less/sass files as well:
$ morbo -w lib -w templates -w public/sass
The output directory where all the compressed files are stored will be "public/packed", relative to the application home:
$app->home->rel_dir('public/packed');
This library tries to find default preprocessors for less, scss, js and css.
NOTE! The preprocessors require optional dependencies to function properly. Check out "detect" in Mojolicious::Plugin::AssetPack::Preprocessors for more details.
This is set to true if the assets should be minified.
Holds a Mojolicious::Plugin::AssetPack::Preprocessors object.
$self->add($moniker => @rel_files);
Used to define new assets aliases. This method is called when the asset() helper is called on the app.
asset()
$bytestream = $self->expand($c, $moniker);
This method will return one tag for each asset defined by the "$moniker".
Will also run "less" or "sass" on the files to convert them to css, which the browser understand.
The returning bytestream will contain style or script tags.
$self->process($moniker);
This method use "process" in Mojolicious::Plugin::AssetPack::Preprocessors to convert and/or minify the sources pointed at by $moniker.
$moniker
The result file will be stored in "Packed directory".
plugin 'AssetPack', { minify => $bool, # compress assets no_autodetect => $bool, # disable preprocessor autodetection rebuild => $bool, # overwrite if assets exists };
Will register the compress helper. All arguments are optional.
compress
"minify" will default to true if "mode" in Mojolicious is "production".
"rebuild" can be set to true to always rebuild the compressed files when the application is started. The default is to use the cached files.
Jan Henning Thorsen - jhthorsen@cpan.org
jhthorsen@cpan.org
To install Mojolicious::Plugin::AssetPack, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious::Plugin::AssetPack
CPAN shell
perl -MCPAN -e shell install Mojolicious::Plugin::AssetPack
For more information on module installation, please visit the detailed CPAN module installation guide.