fantomas-tool 4.7.9
有关详细信息,请查看下面的版本列表。
dotnet tool install --global fantomas-tool --version 4.7.9
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local fantomas-tool --version 4.7.9
#tool dotnet:?package=fantomas-tool&version=4.7.9
nuke :add-package fantomas-tool --version 4.7.9
Fantomas
F# 源代码格式化工具,灵感来源于 Scala 的 Scalariform、OCaml 的 ocp-indent 和 Python 的 PythonTidy。
快速安装
- 命令行:
dotnet tool install -g fantomas-tool
- JetBrains Rider:已预装
- VSCode:是 Ionide 和 fantomas-fmt 的一部分。
- Visual Studio 2019
- Visual Studio 2022
如何使用
命令行工具 / API
使用此命令将 Fantomas 安装为 .NET 5 SDK 全局工具
dotnet tool install -g fantomas-tool
有关详细指南,请阅读 Fantomas:如何使用。
FAKE 构建系统
Fantomas 可以轻松集成到 FAKE 构建系统。查看示例。
JetBrains Rider
Resharper for F# 在底层使用 Fantomas 格式化源代码。无需任何附加插件。
在 Rider 中使用最新版本
由于技术原因,Rider 无法始终使用 NuGet 上找到的最新版本的 Fantomas。作为解决方案,您可以本地安装 fantomas-tool 并使用 dotnet tool install fantomas-tool
配置它为一个 外部工具。
这将对您的 Rider 编辑体验产生影响,外部命令行应用程序对文件的更改可能会触发比必要的更多 Rider 内部逻辑。这在默认格式化体验中可能会很明显。
Visual Studio Code
建议通过使用 Ionide 插件 来使用 Fantomas。Fantomas 集成在 FSAutoComplete 中,这是 Ionide 使用的语言服务器。
或者,您可以安装 fantomas-fmt 扩展。
Visual Studio
F# 格式化扩展将 Fantomas 设置为 F# 文件的默认格式化程序,可在 Visual Studio 的选项中进行配置。
Visual Studio for Mac
使用 dotnet tool install fantomas-tool
在本地安装 fantomas-tool 并将其配置为 [外部工具]
在线
尝试在线使用 Fantomas 在线工具。
早期构建
偶尔会发布给 https://nuget.net.cn/ 的 alpha 或 beta 版本。我们之前的 MyGet 源已弃用。
基准测试
一些数据可以在 https://fsprojects.github.io/fantomas/ 找到 <br/> 我们使用 BenchmarkDotNet 收集 master 分支上每个构建的数据。
目的
该项目旨在根据给定配置格式化 F# 源文件。Fantomas 将确保源文件中元素的正确缩进和一致的间距。我们假设在将其提供给工具之前,源文件是 F# 编译器可以解析的。Fantomas 遵循两个 F# 风格指南:默认情况下遵循微软的 F# 代码格式化指南 和通过各种 设置 的 G-Research F# 代码格式化指南。
用例
该项目考虑了以下用例进行开发
重新格式化一个不熟悉的代码库。当您不是原始编写者时,它会提供可读性。例如,以下示例
type Type = TyLam of Type * Type | TyVar of string | TyCon of string * Type list with override this.ToString () = match this with | TyLam (t1, t2) -> sprintf "(%s -> %s)" (t1.ToString()) (t2.ToString()) | TyVar a -> a | TyCon (s, ts) -> s
将被重写为
type Type = | TyLam of Type * Type | TyVar of string | TyCon of string * Type list override this.ToString() = match this with | TyLam(t1, t2) -> sprintf "(%s -> %s)" (t1.ToString()) (t2.ToString()) | TyVar a -> a | TyCon(s, ts) -> s
将冗长语法转换为轻量语法。提供在冗长模式下的源文件,Fantomas 将将其适当格式化为轻量模式。这可能有助于代码生成,因为生成冗长源文件更容易。例如,以下代码片段
let Multiple9x9 () = for i in 1 .. 9 do printf "\n"; for j in 1 .. 9 do let k = i * j in printf "%d x %d = %2d " i j k; done; done;; Multiple9x9 ();;
被重新格式化为
let Multiple9x9() = for i in 1..9 do printf "\n" for j in 1..9 do let k = i * j printf "%d x %d = %2d " i j k Multiple9x9()
格式化 F# 签名,特别是由 F# 编译器和 F# Interactive 生成的签名。
对于更复杂的示例,请查看 F# 的输出示例,例如 20 个语言大战程序 和 10 个 CodeReview.SE 源文件。
为什么叫“Fantomas”?
选择这样的名字有几个原因。首先,它以“F”开头,就像许多其他 F# 项目一样。其次,Fantomas 是我文学作品中最喜欢的角色。最后,Fantomas 与 “phantom” 的希腊词根相同;巧合的是,F# AST 和格式化规则在正确处理起来时非常 神秘。
贡献指南
请参阅 贡献指南。
鸣谢
我们衷心感谢以下人员所做的贡献。
- Eric Taucher
- Steffen Forkmann
- Jack Pappas
- Ivan Towlson
- Don Syme
- Gustavo Guerra
- Jared Parsons
- Denis Ok
- Enrico Sada
许可
本库和工具可在Apache 2.0许可下使用。更多信息请参阅许可文件。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp3.1 兼容。 |
此包没有依赖项。
版本 | 下载 | 最后更新 | |
---|---|---|---|
5.0.0-alpha-002 | 1,674 | 4/4/2022 | |
5.0.0-alpha-001 | 657 | 3/19/2022 | |
4.7.9 | 86,962 | 5/2/2022 | |
4.7.8 | 3,027 | 4/25/2022 | |
4.7.7 | 7,485 | 4/20/2022 | |
4.7.6 | 47,077 | 4/4/2022 | |
4.7.5 | 8,198 | 3/27/2022 | |
4.7.4 | 938 | 3/25/2022 | |
4.7.3 | 9,878 | 3/12/2022 | |
4.7.2 | 36,467 | 3/11/2022 | |
4.7.1 | 16,548 | 3/8/2022 | |
4.7.0 | 7,398 | 3/4/2022 | |
4.6.6 | 648 | 3/4/2022 | |
4.6.5 | 70,815 | 2/18/2022 | |
4.6.4 | 5,040 | 2/11/2022 | |
4.6.3 | 5,243 | 2/8/2022 | |
4.6.2 | 2,227 | 2/6/2022 | |
4.6.1 | 8,039 | 2/1/2022 | |
4.6.0 | 51,106 | 1/14/2022 | |
4.6.0-beta-001 | 663 | 1/8/2022 | |
4.6.0-alpha-011 | 1,630 | 12/29/2021 | |
4.6.0-alpha-010 | 1,404 | 12/4/2021 | |
4.6.0-alpha-009 | 3,438 | 11/24/2021 | |
4.6.0-alpha-008 | 967 | 11/19/2021 | |
4.6.0-alpha-007 | 1,152 | 11/7/2021 | |
4.6.0-alpha-006 | 1,209 | 11/3/2021 | |
4.6.0-alpha-005 | 661 | 10/27/2021 | |
4.6.0-alpha-004 | 38,406 | 10/20/2021 | |
4.6.0-alpha-003 | 600 | 10/5/2021 | |
4.6.0-alpha-002 | 458 | 9/7/2021 | |
4.6.0-alpha-001 | 345 | 8/11/2021 | |
4.5.12 | 1,005 | 1/8/2022 | |
4.5.11 | 2,280 | 12/29/2021 | |
4.5.10 | 8,775 | 12/4/2021 | |
4.5.9 | 7,868 | 11/24/2021 | |
4.5.8 | 2,414 | 11/19/2021 | |
4.5.7 | 1,511 | 11/7/2021 | |
4.5.6 | 1,621 | 11/3/2021 | |
4.5.5 | 1,168 | 10/27/2021 | |
4.5.4 | 12,240 | 10/5/2021 | |
4.5.3 | 8,512 | 9/7/2021 | |
4.5.2 | 12,980 | 8/11/2021 | |
4.5.1 | 5,328 | 7/24/2021 | |
4.5.0 | 37,643 | 7/7/2021 | |
4.5.0-beta-005 | 431 | 7/6/2021 | |
4.5.0-beta-004 | 355 | 7/5/2021 | |
4.5.0-beta-003 | 463 | 7/5/2021 | |
4.5.0-beta-002 | 893 | 6/27/2021 | |
4.5.0-beta-001 | 2,443 | 6/5/2021 | |
4.5.0-alpha-020 | 415 | 5/26/2021 | |
4.5.0-alpha-019 | 817 | 5/22/2021 | |
4.5.0-alpha-018 | 461 | 5/21/2021 | |
4.5.0-alpha-017 | 708 | 5/15/2021 | |
4.5.0-alpha-016 | 449 | 5/9/2021 | |
4.5.0-alpha-015 | 614 | 5/8/2021 | |
4.5.0-alpha-014 | 657 | 4/30/2021 | |
4.5.0-alpha-013 | 540 | 4/27/2021 | |
4.5.0-alpha-012 | 436 | 4/23/2021 | |
4.5.0-alpha-011 | 688 | 4/20/2021 | |
4.5.0-alpha-010 | 679 | 4/14/2021 | |
4.5.0-alpha-009 | 415 | 4/11/2021 | |
4.5.0-alpha-008 | 678 | 4/8/2021 | |
4.5.0-alpha-007 | 498 | 4/8/2021 | |
4.5.0-alpha-006 | 448 | 4/5/2021 | |
4.5.0-alpha-005 | 908 | 4/3/2021 | |
4.5.0-alpha-004 | 474 | 4/2/2021 | |
4.5.0-alpha-003 | 732 | 3/28/2021 | |
4.5.0-alpha-002 | 598 | 3/22/2021 | |
4.5.0-alpha-001 | 4,946 | 2/26/2021 | |
4.4.0 | 28,862 | 2/25/2021 | |
4.4.0-beta-008 | 783 | 2/19/2021 | |
4.4.0-beta-007 | 382 | 2/12/2021 | |
4.4.0-beta-006 | 639 | 2/12/2021 | |
4.4.0-beta-005 | 469 | 2/9/2021 | |
4.4.0-beta-004 | 668 | 2/5/2021 | |
4.4.0-beta-003 | 735 | 1/30/2021 | |
4.4.0-beta-002 | 568 | 1/23/2021 | |
4.4.0-beta-001 | 484 | 1/22/2021 | |
4.4.0-alpha-008 | 539 | 1/15/2021 | |
4.4.0-alpha-007 | 2,877 | 12/26/2020 | |
4.4.0-alpha-006 | 514 | 12/25/2020 | |
4.4.0-alpha-005 | 522 | 12/23/2020 | |
4.4.0-alpha-004 | 475 | 12/22/2020 | |
4.4.0-alpha-003 | 578 | 12/18/2020 | |
4.4.0-alpha-002 | 462 | 12/17/2020 | |
4.4.0-alpha-001 | 469 | 12/17/2020 | |
4.3.0 | 6,327 | 12/17/2020 | |
4.3.0-beta-002 | 518 | 12/11/2020 | |
4.3.0-beta-001 | 474 | 12/7/2020 | |
4.3.0-alpha-007 | 516 | 11/21/2020 | |
4.3.0-alpha-006 | 496 | 11/20/2020 | |
4.3.0-alpha-005 | 521 | 11/16/2020 | |
4.3.0-alpha-004 | 487 | 11/12/2020 | |
4.3.0-alpha-003 | 490 | 11/10/2020 | |
4.3.0-alpha-002 | 537 | 10/26/2020 | |
4.3.0-alpha-001 | 1,498 | 10/23/2020 | |
4.2.0 | 6,467 | 9/25/2020 | |
4.2.0-alpha-004 | 643 | 9/23/2020 | |
4.2.0-alpha-003 | 521 | 9/21/2020 | |
4.2.0-alpha-002 | 611 | 9/19/2020 | |
4.2.0-alpha-001 | 584 | 9/18/2020 | |
4.1.1 | 2,191 | 9/17/2020 | |
4.1.0 | 1,256 | 9/10/2020 | |
4.1.0-beta-004 | 720 | 9/5/2020 | |
4.1.0-beta-003 | 575 | 9/4/2020 | |
4.1.0-beta-002 | 580 | 9/4/2020 | |
4.1.0-beta-001 | 569 | 9/3/2020 | |
4.1.0-alpha-001 | 552 | 9/1/2020 | |
4.0.0 | 3,160 | 8/27/2020 | |
4.0.0-beta-003 | 594 | 8/21/2020 | |
4.0.0-beta-002 | 1,062 | 8/7/2020 | |
4.0.0-beta-001 | 805 | 7/20/2020 | |
4.0.0-alpha-014 | 541 | 7/14/2020 | |
4.0.0-alpha-013 | 541 | 7/11/2020 | |
4.0.0-alpha-012 | 862 | 7/6/2020 | |
4.0.0-alpha-011 | 509 | 6/25/2020 | |
4.0.0-alpha-010 | 517 | 6/18/2020 | |
4.0.0-alpha-009 | 494 | 6/12/2020 | |
4.0.0-alpha-008 | 540 | 6/2/2020 | |
4.0.0-alpha-007 | 490 | 6/1/2020 | |
4.0.0-alpha-006 | 622 | 5/23/2020 | |
4.0.0-alpha-005 | 749 | 5/16/2020 | |
4.0.0-alpha-004 | 1,020 | 5/4/2020 | |
4.0.0-alpha-003 | 578 | 5/3/2020 | |
4.0.0-alpha-002 | 537 | 4/26/2020 | |
4.0.0-alpha-001 | 514 | 4/20/2020 | |
3.3.0 | 36,935 | 2/28/2020 | |
3.3.0-beta-002 | 1,041 | 2/21/2020 | |
3.3.0-beta-001 | 577 | 2/18/2020 | |
3.2.0 | 2,710 | 2/3/2020 | |
3.2.0-beta-002 | 776 | 1/7/2020 | |
3.2.0-beta-001 | 599 | 12/26/2019 | |
3.1.0 | 12,217 | 11/27/2019 | |
3.0.0 | 1,406 | 10/11/2019 | |
3.0.0-beta-006 | 560 | 10/2/2019 | |
3.0.0-beta-005 | 568 | 9/27/2019 | |
3.0.0-beta-004 | 597 | 9/18/2019 | |
3.0.0-beta-003 | 622 | 9/13/2019 | |
3.0.0-beta-002 | 935 | 7/20/2019 | |
3.0.0-beta-001 | 733 | 7/12/2019 | |
2.9.2 | 6,350 | 2/2/2019 | |
2.9.1 | 1,713 | 11/20/2018 | |
2.9.0 | 1,295 | 10/17/2018 | |
2.8.1 | 1,292 | 9/12/2018 | |
2.8.0 | 1,475 | 7/7/2018 |
### 更改
* 将 `fable_modules` 添加到始终排除的目录中。[Fable 3.4](https://github.com/fable-compiler/Fable/releases/tag/3.4.0)
### 修复
* 将匹配 lambda 后的绑定移出嵌套模块。[#2214](https://github.com/fsprojects/fantomas/issues/2214)