scssphp/scssphp

scssphp 是用 PHP 编写的 SCSS 编译器。

安装: 16 700 558

依赖者: 188

建议者: 10

安全: 0

星级: 568

关注者: 18

分支: 78

开放问题: 19

v1.13.0 2024-08-17 21:02 UTC

README

https://scssphp.github.io/scssphp

Build License

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.phpsass/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

静态分析

scssphp 使用 phpstan 进行静态分析。

从根目录运行以下命令以分析代码库

make phpstan

由于代码库的大部分是遗留代码,无法完全进行类型检查,因此设置包含一个基线文件,其中包含我们希望忽略的所有错误。特别是,我们忽略所有与数组中未指定类型相关的错误,这些数组对应于解析器和编译器中 Sass 值和 Sass AST 节点的表示。在贡献时,处理静态分析的正确过程如下

  1. 在代码库中进行您的更改
  2. 运行 make phpstan
  3. 尽可能修复 phpstan 报告的错误
  4. 重复步骤 2 和 3,直到步骤 3 中没有更多错误得到修复
  5. 运行 make phpstan-baseline 重新生成 phpstan 基线

将对基线添加进行审查,以避免忽略应该已修复的错误。