braunstetter/assets-push-bundle
Pros:
Cons:
symfony/twig-bridge or php-twig (e.g., laravel/twig for Laravel 8+).@vite()/@stack() directives if not carefully scoped (e.g., avoid mixing {% js %} with @stack('scripts'))./css/file.css but may fail for asset('css/file.css') (Laravel’s helper) unless Twig is configured to resolve paths.{{ asset('js/app.js') }}).Twig_Error_Syntax) may obscure Laravel debugging.@pushAsset) if Twig is unavoidable.@stack directives or Filament’s asset management./css/file.css) or dynamic (e.g., route('asset.path'))? If dynamic, how will Twig resolve Laravel-specific paths?@stack or packages like spatie/laravel-tailwind been considered for Blade projects?Target Stack:
{% js %} are also processed by Mix/Vite (e.g., via mix.copy() or custom Webpack rules).Asset component, configure Twig to resolve paths correctly.Dependencies:
| Dependency | Laravel Equivalent | Notes |
|---|---|---|
| Symfony Twig Bundle | php-twig/laravel/twig |
Required for Twig support. |
| Symfony Asset | Laravel Mix/Vite | Path resolution may need custom logic. |
| Symfony Framework | None (standalone Twig) | Avoid pulling in full Symfony. |
composer require braunstetter/assets-push-bundle php-twig
laravel/twig for better integration.config/bundles.php (Symfony-style) or use Twig’s service provider.// app/Providers/AppServiceProvider.php
public function boot()
{
Twig::getRuntime(Twig::class)->addExtension(new class {
public function getAssetPath($path) {
return asset($path); // Laravel's asset() helper
}
});
}
@stack directives with {% js %}/{% css %} in Twig templates.{# Before (Blade) #}
@stack('scripts')
{# After (Twig) #}
{% block pushedJs %}
{% for js in app.pushAssets.js %}
<script src="{{ js }}"></script>
{% endfor %}
{% endblock %}
// webpack.mix.js
mix.copy('public/css', 'public/build/css'); // Example: Copy pushed CSS
{% js %} paths.{% js '/file.js' %} may not resolve Laravel’s asset() helper out-of-the-box. Requires a custom Twig filter/extension.php artisan cache:clear) may need to account for Twig-compiled assets.AssetsPushBundle\AssetsPush\AssetsPusher) are registered in Laravel’s container.FrameworkBundle (bloat). Use standalone Twig/Symfony components.@stack with Twig {% js %}/{% css %}.{% font '/font.woff' %}) via Twig tags.Undefined variable in Twig vs. Blade).How can I help you explore Laravel packages today?