NAME

Mojolicious::Plugin::Fondation::Asset - AssetPack wrapper -- generate via command, load pre-built def at runtime

VERSION

version 0.02

SYNOPSIS

# myapp.pl asset generate          Generate assets/assetpack.def + process
# myapp.pl asset generate -y       Force overwrite

DESCRIPTION

This plugin wraps Mojolicious::Plugin::AssetPack. Asset definitions are collected from all Fondation plugins via the asset generate command, which merges them into assets/assetpack.def and processes the bundles.

During the merge, << (fetch) directives for remote URLs (https?://) are normalized to single <. This prevents AssetPack from marking remote assets as Null (which would exclude them from rendering in development mode). Local assets keep their original < operator.

At runtime (fondation_finalyze), AssetPack is loaded only if the merged assetpack.def exists. If missing, a warning is logged and startup continues -- run asset generate first. If the def exists, AssetPack is loaded, plugin public directories are registered as store paths, and process() is called to register all asset topics. This second process() call skips already-cached external files.

CONFIGURATION

# myapp.conf
{
    Fondation => {
        dependencies => ['Fondation::Asset'],
    },
}

The plugin registers its CLI command namespace (asset generate) in register() and sets up AssetPack at runtime in fondation_finalyze.

COMMANDS

asset generate

Scans all Fondation plugins for share/assets/assetpack.def, merges them, writes assets/assetpack.def, and processes assets through AssetPack.

Options: -y (overwrite without prompt).

RUNTIME

On startup (fondation_finalyze), if assets/assetpack.def exists, AssetPack is loaded, plugin public directories are registered, and process() is called to register all asset topics for template helpers. External files already cached by asset generate are not re-downloaded.

If the def is missing, a warning is logged and startup continues -- run asset generate first.

AUTHOR

Daniel Brosseau <dab@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Daniel Brosseau.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.