41 个版本

0.13.4 2024 年 8 月 4 日
0.13.3 2024 年 5 月 19 日
0.13.2 2024 年 2 月 7 日
0.13.1 2023 年 7 月 17 日
0.4.0 2020 年 3 月 21 日

#77 in 网络编程

Download history 4607/week @ 2024-05-02 4855/week @ 2024-05-09 4327/week @ 2024-05-16 3752/week @ 2024-05-23 4046/week @ 2024-05-30 4264/week @ 2024-06-06 4755/week @ 2024-06-13 4440/week @ 2024-06-20 4723/week @ 2024-06-27 3496/week @ 2024-07-04 3806/week @ 2024-07-11 4180/week @ 2024-07-18 3914/week @ 2024-07-25 3524/week @ 2024-08-01 3578/week @ 2024-08-08 3470/week @ 2024-08-15

15,188 每月下载次数
用于 38 个 Crates (26 直接)

MIT 许可证

1MB
23K SLoC

grass

这个 crate 的目标是提供一种高级接口,将 Sass 编译成纯 CSS。它提供了一个非常有限的 API,目前仅公开了 2 个函数。

除了库之外,此 crate 还包括一个二进制文件,旨在作为 Sass 命令行可执行程序的隐形替代品。

此 crate 的目标是实现与 dart-sass 参考实现完全的功能对等。除错误信息和错误范围外,对 dart-sass 实现的任何偏差都可以视为一个错误。

文档
crates.io

状态

grass 已达到一个阶段,人们可以对其输出相当有信心。对于普通用户来说,与 dart-sass 之间不应该有可察觉的差异。

grass 的每个提交都与 bootstrap v5.0.2 进行了测试,并且每个版本都与 bootstrap 的 main 分支的最后 2,500 个提交进行了测试。

尽管如此,还有一些已知的功能缺失和错误。grass 的粗糙边缘主要包括 @forward@use 的更复杂使用。我们支持这些规则的基本用法,但如 @import 包含 @forward 并带有前缀的模块等更高级功能可能不会按预期行为。

所有已知的功能缺失和错误都记录在 #19

grass 不是一个 libsass 的直接替代品,也没有这个打算。如果您从 libsass 升级到 grass,您可能需要修改您的样式表,尽管这些更改应该与升级到 dart-sass 需要的更改相同。

性能

grass 在与 dart-sasssassc (libsass) 进行基准测试时,结果如下 [点击查看](https://github.com/connorskees/sass-perf)。一般来说,grass 的速度比 dart-sass 快约 2 倍,比 sassc 快约 1.7 倍。

Cargo 特性

commandline

(默认启用): 使用 clap 构建二进制文件

random

(默认启用): 启用内置函数 random([$limit])unique-id()

macro

(默认禁用): 启用宏 grass::include! 以在编译时将 Sass 编译成 CSS

nightly

(默认禁用): 目前仅由 grass::include! 使用以启用 proc_macro::tracked_path

测试

尽可能让这个库遵循与 rust-analyzer 相同的测试哲学 [点击查看](https://internals.rust-lang.org/t/experience-report-contributing-to-rust-lang-rust/12012/17)。也就是说,只需运行 cargo test 即可运行所有测试。这个库维护了一个独立的测试套件,尽管它也包含了一些原生的测试用例。这样做的好处是可以在没有 Ruby 的情况下运行测试,同时也使得测试比官方规范更细粒度。

话虽如此,要运行官方测试套件,

# This script expects node >=v14.14.0. Check version with `node --version`
git clone https://github.com/connorskees/grass --recursive
cd grass && cargo b --release
cd sass-spec && npm install
npm run sass-spec -- --impl=dart-sass --command '../target/release/grass'

规范运行器在 Windows 上无法工作。

使用修改后的规范运行器,该运行器忽略警告和错误范围(但包括错误消息),grass 实现了以下结果

2023-07-09
PASSING: 6230
FAILING: 545
TOTAL: 6905

大多数失败的测试都是纯粹的美学问题,涉及展开模式中注释周围的空白或错误消息。

版本控制

grass 的最低支持 Rust 版本 (MSRV) 是 1.70.0。MSRV 的提高将与次要版本号的提升相对应。当前的 MSRV 不是一个硬性最低要求,但 grass 未来修复版本不一定能在之前的版本上工作。

grass 目前针对 dart-sass 版本 1.54.3。该数字的增加将与次要或修复版本号的提升相对应,具体取决于更改。

依赖关系

~2.6–4MB
~66K SLoC