NAME
Mojolicious::Plugin::AssetPack - Compress and convert css, less, sass,
javascript and coffeescript files
VERSION
0.68
SYNOPSIS
Application
use Mojolicious::Lite;
# load plugin
plugin "AssetPack";
# Define assets: $moniker => @real_assets
app->asset('app.js' => '/js/foo.js', '/js/bar.js', '/js/baz.coffee');
# Add custom response headers for assets
app->asset->headers({"Cache-Control" => "max-age=31536000"});
# Remove old assets
app->asset->purge;
# Start the application
app->start;
See also Mojolicious::Plugin::AssetPack::Manual::Assets for more details
on how to define assets.
Template
%= asset 'app.js'
%= asset 'app.css'
See also Mojolicious::Plugin::AssetPack::Manual::Include for more
details on how to include assets.
DESCRIPTION
Mojolicious::Plugin::AssetPack is a Mojolicious plugin which can be used
to cram multiple assets of the same type into one file. This means that
if you have a lot of CSS files (.css, .less, .sass, ...) as input, the
AssetPack can make one big CSS file as output. This is good, since it
will often speed up the rendering of your page. The output file can even
be minified, meaning you can save bandwidth and browser parsing time.
The core preprocessors that are bundled with this module can handle CSS
and JavaScript files, written in many languages.
MANUALS
The documentation is split up in different manuals, for more in-depth
information:
* See Mojolicious::Plugin::AssetPack::Manual::Assets for how to define
assets in your application.
* See Mojolicious::Plugin::AssetPack::Manual::Include for how to
include the assets in the template.
* See Mojolicious::Plugin::AssetPack::Manual::Modes for how AssetPack
behaves in different modes.
* See Mojolicious::Plugin::AssetPack::Manual::CustomDomain for how to
serve your assets from a custom host.
* See Mojolicious::Plugin::AssetPack::Preprocessors for details on the
different (official) preprocessors.
ENVIRONMENT
MOJO_ASSETPACK_DEBUG
Set this to get extra debug information to STDERR from AssetPack
internals.
MOJO_ASSETPACK_NO_CACHE
If true, convert the assets each time they're expanded, instead of once
at application start (useful for development).
HELPERS
asset
This plugin defined the helper "asset()". This helper can be called in
different ways:
* $self = $c->asset;
This will return the plugin instance, that you can call methods on.
* $c->asset($moniker => @real_files);
See "add".
* $bytestream = $c->asset($moniker, \%args, @attr);
Used to include an asset in a template.
ATTRIBUTES
base_url
$app->plugin("AssetPack" => {base_url => "/packed/"});
$str = $self->base_url;
This attribute can be used to control where to serve static assets from.
Defaults value is "/packed/".
See Mojolicious::Plugin::AssetPack::Manual::CustomDomain for more
details.
NOTE! You need to have a trailing "/" at the end of the string.
minify
$app->plugin("AssetPack" => {minify => $bool});
$bool = $self->minify;
Set this to true if the assets should be minified.
Default is false in "development" mode and true otherwise.
See also Mojolicious::Plugin::AssetPack::Manual::Modes.
preprocessors
$obj = $self->preprocessors;
Holds a Mojolicious::Plugin::AssetPack::Preprocessors object.
METHODS
add
$self->add($moniker => @real_files);
Used to define assets.
See Mojolicious::Plugin::AssetPack::Manual::Assets for mode details.
fetch
$path = $self->fetch($url);
This method can be used to fetch an asset and store the content to a
local file. The download will be skipped if the file already exists. The
return value is the absolute path to the downloaded file.
get
@files = $self->get($moniker);
Returns a list of files which the moniker point to. The list will only
contain one file if "minify" is true.
See "Full control" in Mojolicious::Plugin::AssetPack::Manual::Include
for mode details.
headers
$app->plugin("AssetPack" => {headers => {"Cache-Control" => "max-age=31536000"}});
$app->asset->headers({"Cache-Control" => "max-age=31536000"});
Calling this method will add a after_static hook which will set
additional response headers when an asset is served.
out_dir
$app->plugin("AssetPack" => {out_dir => $str});
$str = $self->out_dir;
Returns the path to the directory where generated packed files are
located.
Changing this from the default will probably lead to inconsistency.
Please report back if you are using this feature with success.
purge
$self = $self->purge({always => $bool});
Used to purge old packed files. This is useful if you want to avoid
filling up "out_dir" with many versions of the packed file.
"always" default to true if in "development" mode and false otherwise.
This method is EXPERIMENTAL.
register
plugin AssetPack => {
base_url => $str, # default to "/packed"
headers => {"Cache-Control" => "max-age=31536000"},
minify => $bool, # compress assets
proxy => "detect", # autodetect proxy settings
out_dir => "/path/to/some/directory",
source_paths => [...],
};
Will register the "asset" helper. All arguments are optional.
source_paths
$self = $self->source_paths($array_ref);
$array_ref = $self->source_paths;
This method returns a list of paths to source files. The default is to
return "paths" in Mojolicious::Static from the current application
object, but you can specify your own paths.
See also "Custom source directories" in
Mojolicious::Plugin::AssetPack::Manual::Assets for more information.
test_app
Mojolicious::Plugin::AssetPack->test_app("MyApp");
This method will create two Mojo::Test instances of "MyApp" and create
assets with "minify" set to 0 and 1. "SHIPPING" in
Mojolicious::Plugin::AssetPack::Manual::Cookbook for more details.
This method is EXPERIMENTAL.
COPYRIGHT AND LICENSE
Copyright (C) 2014, Jan Henning Thorsen.
This program is free software, you can redistribute it and/or modify it
under the terms of the Artistic License version 2.0.
AUTHOR
Jan Henning Thorsen - "jhthorsen@cpan.org"
Alexander Rymasheusky
Per Edin - "info@peredin.com"
Viktor Turskyi