skwirrel/scssphp

scssphp 是用 PHP 编写并添加了一些小功能的 SCSS 编译器。

dev-main 2024-06-11 18:57 UTC

This package is not auto-updated.

Last update: 2024-10-02 18:27:27 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 *.php

静态分析

scssphp 使用 phpstan 进行静态分析。

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

make phpstan

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

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

将审查基线中的添加,以避免忽略应修复的错误。