Web::AssetLib - Moose-based pluggable library manager for compiling and serving static assets
version 0.081
Create a library for your project:
package My::Library;
use Moose;
extends 'Web::AssetLib::Library';
sub jQuery{
return Web::AssetLib::Asset->new(
type => 'javascript',
input_engine => 'LocalFile',
rank => -100,
input_args => { path => "your/local/path/jquery.min.js", }
);
}
1;
Compile assets from that library:
use My::Library;
# configure at least one input and one output plugin
# (and optionally, a minifier plugin)
my $lib = My::Library->new(
input_engines => [
Web::AssetLib::InputEngine::LocalFile->new(
search_paths => ['/my/assets/root/']
)
],
output_engines => [
Web::AssetLib::OutputEngine::LocalFile->new(
output_path => '/my/webserver/path/assets/'
)
]
);
# create an asset bundle to represent a group of assets
# that should be compiled together:
my $homepage_javascript = Web::AssetLib::Bundle->new();
$hompage_javascript->addAsset($lib->jQuery);
# compile your bundle
my $html_tag = $lib->compile( bundle => $homepage_javascript )->as_html;
Web::AssetLib allows you to build an easy-to-tweak input -> (minfiy) -> output pipeline for web assets, as well as a framework for managing those assets.
You have the option to compile groups of assets, or individual ones. Out of the box, Web::AssetLib supports local file, remote file, and string inputs, minification with CSS::Minifier and JavaScript::Minifier, and local file output.
Currently available plugins:
- Web::AssetLib::OutputEngine::S3 - output to Amazon S3 bucket
Possibilities for future plugins: non-S3 CDN outputs, SASS input, etc.
This documentation uses method signature notation as defined by Method::Signatures.
Basic usage is covered in Web::AssetLib::Library.
The following base classes are provided for extendability:
- Web::AssetLib::Library — a base class for writing your own asset library, and configuring the various pipeline plugins
- Web::AssetLib::InputEngine — a base class for writing your own Input Engine
- Web::AssetLib::OutputEngine — a base class for writing your own Output Engine
- Web::AssetLib::MinifierEngine — a base class for writing your own Minifier Engine
The following objects are used to define assets or groups of assets:
- Web::AssetLib::Asset — a representation of a particular asset in your library
- Web::AssetLib::Bundle — an indexed grouping of Web::AssetLib::Asset objects
Plugins provided by default:
- Web::AssetLib::InputEngine::LocalFile — allows importing an asset from your local filesystem
- Web::AssetLib::InputEngine::RemoteFile — allows importing an asset via a URL
- Web::AssetLib::InputEngine::Content — allows importing an asset as a raw string
- Web::AssetLib::MinifierEngine::Standard — basic CSS/Javascript minification utilizing either CSS::Minifier and JavaScript::Minifier or CSS::Minifier::XS and JavaScript::Minifier::XS depending on availability
- Web::AssetLib::OutputEngine::LocalFile — allows exporting an asset or bundle to your local filesystem
Please report any bugs or feature requests through the issue tracker at https://github.com/ryan-lang/Web-AssetLib/issues. You will be notified automatically of any progress on your issue.
This is open source software. The code repository is available for public review and contribution under the terms of the license.
https://github.com/ryan-lang/Web-AssetLib
git clone https://github.com/ryan-lang/Web-AssetLib.git
Ryan Lang rlang@cpan.org