twig/cssinliner-extra
Twig extension adding the inline_css filter to inline CSS styles into HTML documents. Useful for rendering emails and templates with CSS applied directly to elements, improving compatibility with clients that strip or ignore external styles.
twig/laravel or laravelcollective/html). For Blade-centric Laravel apps, integration requires a custom directive or wrapper, adding complexity but remaining viable with effort.inline_css) with minimal configuration, reducing boilerplate.dom extension (enabled by default in most Laravel deployments).twig/twig (≥v3.0) and league/html-to-markup, which are stable but may need version alignment.Str::of() + DOMDocument) is necessary, adding maintenance overhead.| Risk Area | Severity | Mitigation |
|---|---|---|
| Twig Adoption Cost | Medium | Prioritize high-impact templates (e.g., emails, marketing pages) for migration. |
| DOM Extension Missing | High | Verify dom extension is enabled (`php -m |
| HTML Parsing Failures | Low | Test with complex HTML (e.g., Shadow DOM, iframes); sanitize input if needed. |
| Blade Incompatibility | High | Plan for custom Blade directives or restrict usage to Twig templates. |
| CSS Parsing Limits | Medium | Avoid @import or URL-based CSS variables; preprocess if required. |
| Performance Overhead | Low | Benchmark inlining impact on TTFB; cache results for static content. |
| Security (XSS) | Medium | Leverage the package’s pre-escape input fix (v3.26.0) and validate HTML input. |
twig/laravel).postcss-inline or purgecss.grunt-css-inliner).composer require twig/laravel.composer require twig/cssinliner-extra
config/view.php (Laravel) or Twig’s environment setup:
Twig\Extension\CssInlinerExtraExtension::class,
{{ content|inline_css }}
{{ $pageHtml|inline_css }}).{{ content|inline_css(exclude=['/vendor.css']) }}
// In a Twig extension or service
$cache->remember('inlined_html_'.$contentHash, 3600, function() use ($content) {
return $content|inline_css;
});
<style>).<link rel="stylesheet">), internal CSS (<style>), and inline styles (style="").@import, URL-based CSS variables, or media query-specific inlining.// app/Providers/BladeServiceProvider.php
Blade::directive('inlineCss', function ($expression) {
return "<?php echo (new \\Twig\\Extension\\CssInlinerExtraExtension())->getFilter()->filter($this->data['__env']->getContainer()->get('twig'), {$expression}); ?>";
});
Usage:
@inlineCss($content)
How can I help you explore Laravel packages today?