skwirrel / scssphp
scssphp is a compiler for SCSS written in PHP with a few small additions.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 86
pkg:composer/skwirrel/scssphp
Requires
- php: >=8.1
- ext-ctype: *
- ext-json: *
- league/uri: ^7.4@dev
- league/uri-interfaces: ^7.3
- symfony/filesystem: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4
- phpunit/phpunit: ^9.5.6
- sass/sass-spec: *
- squizlabs/php_codesniffer: ~3.5
- symfony/phpunit-bridge: ^5.1
- symfony/var-dumper: ^6.3
- thoughtbot/bourbon: ^7.0
- twbs/bootstrap: ~5.0
- twbs/bootstrap4: 4.6.1
- zurb/foundation: ~6.7.0
Suggests
- ext-iconv: Can be used as fallback when ext-mbstring is not available
- ext-mbstring: For best performance, mbstring should be installed as it is faster than ext-iconv
This package is not auto-updated.
Last update: 2025-10-15 23:26:40 UTC
README
https://scssphp.github.io/scssphp
scssphp is a compiler for SCSS written in PHP.
Checkout the homepage, https://scssphp.github.io/scssphp, for directions on how to use.
Running Tests
scssphp uses PHPUnit for testing.
Run the following command from the root directory to run every test:
vendor/bin/phpunit tests
There are several tests in the tests/ directory:
ApiTest.phpcontains various unit tests that test the PHP interface.ExceptionTest.phpcontains unit tests that test for exceptions thrown by the parser and compiler.FailingTest.phpcontains tests reported in Github issues that demonstrate compatibility bugs.InputTest.phpcompiles every.scssfile in thetests/inputsdirectory then compares to the respective.cssfile in thetests/outputsdirectory.SassSpecTest.phpextracts tests from thesass/sass-specrepository.
When changing any of the tests in tests/inputs, the tests will most likely
fail because the output has changed. Once you verify that the output is correct
you can run the following command to rebuild all the tests:
BUILD=1 vendor/bin/phpunit tests
This will compile all the tests, and save results into tests/outputs. It also
updates the list of excluded specs from sass-spec.
To enable the full sass-spec compatibility tests:
TEST_SASS_SPEC=1 vendor/bin/phpunit tests
Coding Standard
scssphp source conforms to PSR12.
Run the following command from the root directory to check the code for "sniffs".
vendor/bin/phpcs --standard=PSR12 --extensions=php bin src tests *.php
Static Analysis
scssphp uses phpstan for static analysis.
Run the following command from the root directory to analyse the codebase:
make phpstan
As most of the codebase is composed of legacy code which cannot be type-checked fully, the setup contains a baseline file with all errors we want to ignore. In particular, we ignore all errors related to not specifying the types inside arrays when these arrays correspond to the representation of Sass values and Sass AST nodes in the parser and compiler. When contributing, the proper process to deal with static analysis is the following:
- Make your change in the codebase
- Run
make phpstan - Fix errors reported by phpstan when possible
- Repeat step 2 and 3 until nothing gets fixed anymore at step 3
- Run
make phpstan-baselineto regenerate the phpstan baseline
Additions to the baseline will be reviewed to avoid ignoring errors that should have been fixed.