skwirrel / scssphp
scssphp 是用 PHP 编写并添加了一些小功能的 SCSS 编译器。
dev-main
2024-06-11 18:57 UTC
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: 2024-10-02 18:27:27 UTC
README
https://scssphp.github.io/scssphp
scssphp
是用 PHP 编写的 SCSS 编译器。
访问主页,https://scssphp.github.io/scssphp,获取使用说明。
运行测试
scssphp
使用 PHPUnit 进行测试。
从根目录运行以下命令来运行所有测试
vendor/bin/phpunit tests
在 tests/
目录中有几个测试
ApiTest.php
包含测试 PHP 接口的多个单元测试。ExceptionTest.php
包含测试解析器和编译器抛出的异常的单元测试。FailingTest.php
包含在 Github 问题上报告的测试,展示了兼容性错误。InputTest.php
编译tests/inputs
目录中的每个.scss
文件,然后将其与tests/outputs
目录中的相应.css
文件进行比较。SassSpecTest.php
从sass/sass-spec
存储库中提取测试。
当更改 tests/inputs
中的任何测试时,由于输出已更改,测试很可能会失败。一旦验证输出正确,可以运行以下命令来重建所有测试
BUILD=1 vendor/bin/phpunit tests
这将编译所有测试,并将结果保存到 tests/outputs
中。它还会更新从 sass-spec 排除的规格列表。
要启用完整的 sass-spec
兼容性测试
TEST_SASS_SPEC=1 vendor/bin/phpunit tests
编码规范
scssphp
源代码符合 PSR12。
从根目录运行以下命令来检查代码的 "sniffs"。
vendor/bin/phpcs --standard=PSR12 --extensions=php bin src tests *.php
静态分析
scssphp
使用 phpstan 进行静态分析。
从根目录运行以下命令来分析代码库
make phpstan
由于代码库的大部分是遗留代码,无法完全进行类型检查,因此设置包含一个包含我们想要忽略的所有错误的基线文件。特别是,我们忽略与数组中未指定类型相关的所有错误,这些数组对应于解析器和编译器中 Sass 值和 Sass AST 节点的表示。在贡献时,处理静态分析的正确流程如下
- 在代码库中进行您的更改
- 运行
make phpstan
- 尽可能修复 phpstan 报告的错误
- 重复步骤 2 和 3,直到步骤 3 中不再有任何错误被修复
- 运行
make phpstan-baseline
以重新生成 phpstan 基线
将审查基线中的添加,以避免忽略应修复的错误。