=head1 NAME
Mojolicious::Plugin::StaticCompressor - Automatic JS/CSS minifier & compressor for Mojolicious
=head1 SYNOPSIS
Into the your Mojolicious application:
sub startup {
my $self = shift;
$self->plugin('StaticCompressor');
~~~
(Also, you can read the examples using the Mojolicious::Lite, in a later section.)
Then, into the template in your application:
~~~~
<%= js '/foo.js', '/bar.js' %>
<%= css '/baz.css' %>
~~~~
However, this module has just launched development yet. please give me your feedback.
=head1 DESCRIPTION
This Mojolicious plugin is minifier and compressor for static JavaScript file (.js) and CSS file (.css).
=head1 INSTALLATION (from GitHub)
$ git clone git://github.com/mugifly/p5-Mojolicious-Plugin-StaticCompressor.git
$ cpanm ./p5-Mojolicious-Plugin-StaticCompressor
=head1 METHODS
Mojolicious::Plugin::StaticCompressor inherits all methods from L and implements the following new ones.
=head2 register
Register plugin in L application.
=head1 HELPERS
You can use these helpers on templates and others.
=head2 js $file_path [, ...]
Example of use on template file:
<%= js '/js/foo.js' %>
This is just available as substitution for the 'javascript' helper (built-in helper of Mojolicious).
However, this helper will output a HTML-tag including the URL which is a compressed files.
When this script file has output (just received a request), it is minified automatically.
Then, minified file are cached in the memory.
=head3 Support for multiple files
In addition, You can also use this helper with multiple js-files:
<%= js '/js/foo.js', '/js/bar.js' %>
In this case, this helper will output a single HTML-tag.
but, when these file has output, these are combined (and minified) automatically.
=head2 css $file_path [, ...]
This is just available as substitution for the 'stylesheet' helper (built-in helper of Mojolicious).
=head2 js_nominify $file_path [, ...]
If you don't want Minify, please use this.
This helper is available for purposes that only combine with multiple js-files.
=head2 css_nominify $file_path [, ...]
If you don't want Minify, please use this.
This helper is available for purposes that only combine with multiple css-files.
=head1 CONFIGURATION
You can set these options when call the plugin from your application.
=head2 disable_on_devmode
You can disable a combine (and minify) when running your Mojolicious application as 'development' mode (such as a running on the 'morbo'), by using this option:
$self->plugin('StaticCompressor', disable_on_devmode => 1);
(default: 0 (DISABLE))
=head2 url_path_prefix
You can set the prefix of directory path which stores away a automatic compressed (and cached) file.
The directory that specified here, will be made automatically.
(default: "auto_compressed")
=head2 background
You can allow background processing to this plugin. (This option is EXPERIMENTAL.)
If this option is disabled, a delay may occur in front-end-processing because this module will re-process it when static file has re-write.
This option will be useful to prevent it with automatic background processing.
(default: 0 (DISABLE))
=head2 background_interval_sec
When you enable "background", this option is available.
(default: 604800 sec (7 days))
=head2 auto_cleanup
This option provides automatic clean-up of old cache file.
(default: 1 (ENABLE))
=head2 auto_cleanup_expires_sec
When you enable "auto_cleanup", this option is available.
(default: 604800 sec (7 days))
=head1 KNOWN ISSUES
=over 4
=item * Support for LESS and Sass.
=back
Your feedback is highly appreciated!
https://github.com/mugifly/p5-Mojolicious-Plugin-StaticCompressor/issues
=head1 EXAMPLE OF USE
Prepared a brief sample app for you, with using Mojolicious::Lite:
example/example.pl
$ morbo example.pl
Let's access to http://localhost:3000/ with your browser.
=head1 REQUIREMENTS
=over 4
=item * Mojolicious v3.8x or later (Operability Confirmed: v3.88, v4.25)
=item * Other dependencies (cpan modules).
=back
=head1 SEE ALSO
L
L
L
L
=head1 CONTRIBUTORS
Thank you to:
=over 4
=item * jakir-hayder L
=back
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2013, Masanori Ohgita (http://ohgita.info/).
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
Thanks, Perl Mongers & CPAN authors.