20 个版本 (12 个稳定版)

1.10.0-beta.72024年7月23日
1.10.0-beta.42024年5月28日
1.8.0 2024年2月28日
1.7.0 2023年8月11日
1.0.0 2022年11月22日

#530 in 过程宏

Download history 339/week @ 2024-05-03 240/week @ 2024-05-10 222/week @ 2024-05-17 261/week @ 2024-05-24 242/week @ 2024-05-31 444/week @ 2024-06-07 379/week @ 2024-06-14 391/week @ 2024-06-21 437/week @ 2024-06-28 614/week @ 2024-07-05 446/week @ 2024-07-12 665/week @ 2024-07-19 983/week @ 2024-07-26 636/week @ 2024-08-02 423/week @ 2024-08-09 1306/week @ 2024-08-16

3,621 每月下载量
用于 typeshare-cli

MIT/Apache

400KB
11K SLoC

Rust 5.5K SLoC // 0.0% comments Swift 2K SLoC // 0.0% comments Go 1.5K SLoC // 0.0% comments Scala 819 SLoC // 0.1% comments Kotlin 804 SLoC // 0.1% comments TypeScript 351 SLoC // 0.1% comments

typeshare-core

Typeshare背后的核心库,包含类型定义、解析和代码生成。

格式化

格式化代码很难。真的,真的很困难。Typeshare碰巧是一个需要生成多语言精美格式化代码的程序。

为了避免完美格式化代码的复杂性,Typeshare采用了生成“尽力而为”输出的方法,然后将其通过每个语言的相应格式化工具进行处理。这使得Typeshare的输出每次都符合语言开发者的预期,我们方面的努力最小。

因此,生成良好格式的输出需要您在运行Typeshare时安装并可用每个语言的适当格式化工具。如果您没有这些工具,Typeshare的默认(不那么美观)输出将被使用。

测试

Typeshare的测试套件建立在快照测试的概念之上,这是一种数据驱动的测试方法,旨在使在代码库中实施大型、全面的变化变得快速且痛苦。

测试在tests/snapshot_tests.rs中定义的宏内部声明。一旦声明了测试,运行

env UPDATE_EXPECT=1 cargo test -p typeshare-core

This will generate the the folder for the new test (inside of data/tests) along with starter files inside of it. Save whatever Rust source input you'd like to test in the input.rs file. Then, run the command again

env UPDATE_EXPECT=1 cargo test -p typeshare-core

各种输出文件将根据给定的输入使用typeshare的当前输出进行更新。如果您对输出满意,则继续;如果不满意,请对typeshare进行修改,直到输出有意义,每次更新预期输出时都要重新运行上述命令。

当然,可以在不更新任何预期的情况下正常运行测试套件。

cargo test -p typeshare-core

如果您需要仅更新特定测试的预期,请运行以下命令(将您的测试名称替换为最后一个参数)

env UPDATE_EXPECT=1 cargo test -p typeshare-core --test snapshot_tests -- can_handle_serde_rename_all::swift

快照测试文件中存储的数据是typeshare的输出,未经修改。

这将将output_formatted.(ts|kt|swift)文件写入每个存储的快照文件旁边。

依赖关系

~0.8-1.2MB
~26K SLoC