#sass #css #web #scss

include_sass

grass::include! 宏的内部实现

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

Download history 472/week @ 2024-04-14 409/week @ 2024-04-21 569/week @ 2024-04-28 412/week @ 2024-05-05 707/week @ 2024-05-12 784/week @ 2024-05-19 634/week @ 2024-05-26 494/week @ 2024-06-02 1255/week @ 2024-06-09 360/week @ 2024-06-16 419/week @ 2024-06-23 427/week @ 2024-06-30 281/week @ 2024-07-07 340/week @ 2024-07-14 271/week @ 2024-07-21 616/week @ 2024-07-28

1,518 月下载量
6 个 crate (2 直接) 中使用

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 时必须进行的更改不同。

性能

grassdart-sasssassc (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