# NAME
Web::AssetLib - Moose-based pluggable library manager for compiling and serving static assets
# VERSION
version 0.042
# SYNOPSIS
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;
# DESCRIPTION
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](
https://metacpan.org/pod/Web::AssetLib::InputEngine::LocalFile),
[remote file](
https://metacpan.org/pod/Web::AssetLib::InputEngine::RemoteFile), and [string](
https://metacpan.org/pod/Web::AssetLib::InputEngine::Content)
inputs, minification with [CSS::Minifier](
https://metacpan.org/pod/CSS::Minifier) and [JavaScript::Minifier](
https://metacpan.org/pod/JavaScript::Minifier), and
[local file](
https://metacpan.org/pod/Web::AssetLib::OutputEngine::LocalFile) output.
Possibilities for future plugins: Amazon S3 output, other CDN outputs, SASS input, etc.
This documentation uses method signature notation as defined by [Method::Signatures](
https://metacpan.org/pod/Method::Signatures).
# USAGE
Basic usage is covered in [Web::AssetLib::Library](
https://metacpan.org/pod/Web::AssetLib::Library).
The following base classes are provided for extendability:
- [Web::AssetLib::Library](
https://metacpan.org/pod/Web::AssetLib::Library) — a base class for writing your own asset library, and configuring the various pipeline plugins
- [Web::AssetLib::InputEngine](
https://metacpan.org/pod/Web::AssetLib::InputEngine) — a base class for writing your own Input Engine
- [Web::AssetLib::OutputEngine](
https://metacpan.org/pod/Web::AssetLib::OutputEngine) — a base class for writing your own Output Engine
- [Web::AssetLib::MinifierEngine](
https://metacpan.org/pod/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](
https://metacpan.org/pod/Web::AssetLib::Asset) — a representation of a particular asset in your library
- [Web::AssetLib::Bundle](
https://metacpan.org/pod/Web::AssetLib::Bundle) — an indexed grouping of [Web::AssetLib::Asset](
https://metacpan.org/pod/Web::AssetLib::Asset) objects
Plugins provided by default:
- [Web::AssetLib::InputEngine::LocalFile](
https://metacpan.org/pod/Web::AssetLib::InputEngine::LocalFile) — allows importing an asset from your local filesystem
- [Web::AssetLib::InputEngine::RemoteFile](
https://metacpan.org/pod/Web::AssetLib::InputEngine::RemoteFile) — allows importing an asset via a URL
- [Web::AssetLib::InputEngine::Content](
https://metacpan.org/pod/Web::AssetLib::InputEngine::Content) — allows importing an asset as a raw string
- [Web::AssetLib::MinifierEngine::Standard](
https://metacpan.org/pod/Web::AssetLib::MinifierEngine::Standard) — basic CSS/Javascript minification utilizing
either [CSS::Minifier](
https://metacpan.org/pod/CSS::Minifier) and [JavaScript::Minifier](
https://metacpan.org/pod/JavaScript::Minifier) or [CSS::Minifier::XS](
https://metacpan.org/pod/CSS::Minifier::XS) and [JavaScript::Minifier::XS](
https://metacpan.org/pod/JavaScript::Minifier::XS)
depending on availability
- [Web::AssetLib::OutputEngine::LocalFile](
https://metacpan.org/pod/Web::AssetLib::OutputEngine::LocalFile) — allows exporting an asset or bundle to your local filesystem
# SUPPORT
## Bugs / Feature Requests
Please report any bugs or feature requests through the issue tracker
at [
https://github.com/ryan-lang/Web-AssetLib/issues](
https://github.com/ryan-lang/Web-AssetLib/issues).
You will be notified automatically of any progress on your issue.
## Source Code
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](
https://github.com/ryan-lang/Web-AssetLib)
git clone
https://github.com/ryan-lang/Web-AssetLib.git
# AUTHOR
Ryan Lang <
[email protected]>