Installation
composer require app-dev-panel/frontend-assets
Publish the package assets (if needed):
php artisan vendor:publish --provider="AppDevPanel\FrontendAssets\FrontendAssetsServiceProvider" --tag="public"
Basic Configuration
Add the service provider to config/app.php:
'providers' => [
AppDevPanel\FrontendAssets\FrontendAssetsServiceProvider::class,
],
First Use Case Register assets in a controller or service:
use AppDevPanel\FrontendAssets\Facades\FrontendAssets;
public function index()
{
FrontendAssets::register([
'css' => [
'app' => asset('css/app.css'),
'vendor' => asset('css/vendor.css'),
],
'js' => [
'app' => asset('js/app.js'),
],
]);
return view('welcome');
}
View Integration Include the generated assets in your layout:
@frontendAssets
Dynamic Registration Register assets conditionally based on user roles or routes:
if (auth()->check()) {
FrontendAssets::register([
'js' => ['auth' => asset('js/auth.js')],
]);
}
Grouping Assets Organize assets by logical groups (e.g., admin, dashboard):
FrontendAssets::group('admin', [
'css' => ['admin' => asset('css/admin.css')],
'js' => ['admin' => asset('js/admin.js')],
]);
Versioning Automatically append version hashes to assets:
FrontendAssets::setVersioning(true);
Middleware Integration Register assets in middleware for global access:
public function handle($request, Closure $next)
{
FrontendAssets::register(['css' => ['global' => asset('css/global.css')]]);
return $next($request);
}
Service Provider Boot Register default assets in a service provider:
public function boot()
{
FrontendAssets::register([
'css' => ['base' => asset('css/base.css')],
]);
}
Blade Directives
Extend the @frontendAssets directive for custom logic:
Blade::directive('frontendAssets', function () {
return "<?php echo AppDevPanel\FrontendAssets\Facades\FrontendAssets::render(); ?>";
});
Asset Overwriting
merge() to combine assets:
FrontendAssets::merge(['js' => ['extra' => asset('js/extra.js')]]);
Missing Assets in Production
mix() for Laravel Mix assets:
FrontendAssets::register(['css' => ['app' => mix('css/app.css')]]);
Caching Conflicts
php artisan view:clear
Inspect Registered Assets Dump registered assets for debugging:
dd(FrontendAssets::getRegisteredAssets());
Check Rendered Output Verify the rendered HTML output:
dd(FrontendAssets::render());
Disable Versioning Temporarily For debugging, disable versioning:
FrontendAssets::setVersioning(false);
Custom Asset Tags
Extend the package to support custom tags (e.g., fonts, images):
// In a service provider
FrontendAssets::extend('fonts', function ($tag, $assets) {
return '<link rel="preload" href="' . $assets . '" as="font">';
});
Asset Preprocessing Hook into asset registration to modify paths or add attributes:
FrontendAssets::preprocess(function ($assets) {
foreach ($assets['js'] as &$path) {
$path = str_replace('js/', 'dist/js/', $path);
}
return $assets;
});
Custom Render Logic Override the default rendering behavior:
FrontendAssets::setRenderer(function ($assets) {
return '<div class="custom-assets">' . htmlspecialchars(print_r($assets, true)) . '</div>';
});
How can I help you explore Laravel packages today?