8 个版本
新版本 0.13.4 | 2024年8月4日 |
---|---|
0.13.3 | 2024年5月19日 |
0.13.2 | 2024年2月7日 |
0.13.0 | 2023年7月9日 |
0.12.1 | 2023年1月8日 |
12 in #scss
1,518 月下载量
在 6 个 crate (2 直接) 中使用
1MB
23K SLoC
grass
这个 crate 旨在提供将 Sass 编译成纯 CSS 的高级接口。它提供非常有限的 API,目前仅公开 2 个函数。
除了库之外,这个 crate 还包含一个二进制文件,该文件旨在作为 Sass 命令行可执行文件的隐形替代品。
这个 crate 旨在与 dart-sass
参考实现实现完全的功能兼容。除非是错误消息和错误范围,否则对 dart-sass
实现的任何偏差都可以视为错误。
状态
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-sass
和 sassc
(libsass
) 进行了基准测试,详情请见 此处。总的来说,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
相同的测试哲学,这个库尝试执行测试。也就是说,只需运行 cargo test
就可以运行所有测试。虽然这个库维护了一个与 sass-spec
不同的测试套件,但它确实包含了部分规格测试。这允许在不使用 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
。这个数字的增加将对应于一个次要或错误修复版本号的增加,具体取决于更改。
依赖项
~3.5MB
~57K SLoC