NAME
    Mojolicious::Plugin::AssetPack - Compress and convert css, less, sass
    and javascript files

VERSION
    0.08

SYNOPSIS
    In your application:

      use Mojolicious::Lite;

      plugin 'AssetPack';

      # 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');

      # you can combine with assets from web
      app->asset('bundle.js' => (
        'http://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.3.0/es5-shim.js',
        'http://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.3.0/es5-sham.js',
        'http://code.jquery.com/jquery-1.11.0.js',
        '/js/myapp.js',
      ));

      app->start;

    In your template:

      %= asset 'app.js'
      %= asset 'app.css'

    Or if you need to add the tags manually:

      % for my $asset (asset->get('app.js')) {
        %= javascript $asset
      % }

    See also "register".

DESCRIPTION
  Production mode
    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".

    The files in the packed directory will have a checksum added to the
    filename which will ensure broken browsers request a new version once
    the file is changed. Example:

      <script src="/packed/app-ed6d968e39843a556dbe6dad8981e3e0.js">

    This is done using "process".

  Development mode
    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

  Preprocessors
    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.

    You can also define your own preprocessors:

      app->asset->preprocessors->add(js => sub {
        my($assetpack, $text, $file) = @_;
        $$text = "// yikes!\n" if 5 < rand 10;
      });

ATTRIBUTES
  minify
    Set this to true if the assets should be minified.

  preprocessors
    Holds a Mojolicious::Plugin::AssetPack::Preprocessors object.

  out_dir
    Holds the path to the firectory where packed files can be written. It
    defaults to "mojo-assetpack" directory in temp unless a static directory
    is writeable.

  rebuild
    Deprecated.

METHODS
  add
      $self->add($moniker => @rel_files);

    Used to define new assets aliases. This method is called when the
    "asset()" helper is called on the app.

  expand
      $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.

  get
      @files = $self->get($moniker);

    Returns a list of files which the moniker point to. The list will only
    contain one file if the $moniker is minified.

  process
      $self->process($moniker => @files);

    This method use "process" in
    Mojolicious::Plugin::AssetPack::Preprocessors to convert and/or minify
    the sources pointed at by $moniker.

    The result file will be stored in "Packed directory".

  register
      plugin 'AssetPack', {
        cleanup => $bool, # default is true
        minify => $bool, # compress assets
        no_autodetect => $bool, # disable preprocessor autodetection
      };

    Will register the "compress" helper. All arguments are optional.

    "cleanup" will remove any old processed files. You want to disable this
    if you have other web sites that need to access an old version of the
    minified files.

    "minify" will default to true if "mode" in Mojolicious is "production".

AUTHOR
    Jan Henning Thorsen - "jhthorsen@cpan.org"

