Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Php Css Parser

Php Css Parser Laravel Package

sabberworm/php-css-parser

Parse and manipulate CSS in PHP with a fast, flexible parser. Convert CSS into an object model, inspect and edit rules, selectors, and declarations, then render back to CSS. Useful for minifying, rewriting assets, or building CSS tooling.

View on GitHub
Deep Wiki
Context7

Parser for CSS Files written in PHP

Frequently asked questions about Php Css Parser
Can I use sabberworm/php-css-parser in Laravel to minify CSS files before deployment?
Yes, this package is ideal for minification. Parse CSS files into an object model, remove unnecessary whitespace, shorten property values, and serialize back to optimized CSS. It handles modern CSS syntax and edge cases better than regex-based solutions.
How do I install sabberworm/php-css-parser in a Laravel project?
Run `composer require sabberworm/php-css-parser` in your project root. No additional Laravel-specific setup is needed—it’s a standalone PHP library. Use it via Composer autoloading in your service providers, controllers, or console commands.
Does this package support Laravel Mix or Vite for CSS processing?
While the package itself doesn’t integrate directly with Laravel Mix or Vite, you can use it in custom webpack loaders or Node.js plugins. For PHP-based processing, call it from Laravel’s `postCss` or `postCompile` hooks in `webpack.mix.js`.
What Laravel versions does sabberworm/php-css-parser support?
This is a PHP library, not Laravel-specific, so it works with any Laravel version (5.5+) as long as your PHP version (7.2+) is compatible. Check the package’s PHP requirements in Composer for exact versions.
Can I use this to dynamically generate or rewrite CSS rules in a Laravel app?
Absolutely. Parse existing CSS, modify selectors, add/remove declarations, or inject new rulesets programmatically. Serialize the modified AST back to CSS and output it dynamically—great for theming systems or runtime styling adjustments.
How does performance compare to other CSS parsers like Leptonic or CSSParser?
sabberworm/php-css-parser is optimized for correctness and flexibility, not raw speed. For most use cases (minification, analysis), it’s sufficiently fast. Benchmark against alternatives like `league/css-to-inline-styles` for your specific workload, but prioritize this if you need robust AST manipulation.
Will this break if I parse malformed or browser-specific CSS (e.g., vendor prefixes)?
The parser is designed to handle real-world CSS, including vendor prefixes (e.g., `-webkit-`), malformed syntax, and edge cases. It won’t throw errors on invalid CSS but may produce a partial AST. Use `try-catch` blocks to handle parsing failures gracefully.
Can I use this package in Laravel queues or scheduled tasks for batch CSS processing?
Yes, it’s safe for background processing. The library is stateless and thread-safe, making it suitable for Laravel queues or `schedule:run` tasks. Process large CSS files or directories asynchronously without memory issues.
Are there alternatives if I need a lighter-weight solution for simple CSS minification?
For basic minification, consider `matthiasmullie/minify` (PHP) or `postcss` (Node.js). However, if you need to *inspect* or *rewrite* CSS (not just compress), sabberworm/php-css-parser offers deeper control over the AST, which is harder to replicate with lighter tools.
How do I test CSS parsing and manipulation logic in Laravel’s PHPUnit?
Write unit tests by parsing known CSS strings, asserting the structure of the AST (e.g., rule count, selector types), and verifying serialized output matches expectations. Use `assertSame()` for complex comparisons. Example: `assertEquals('body { color: red; }', $parser->save($ast));`
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport