144 lines
2.6 KiB
Markdown
144 lines
2.6 KiB
Markdown
# A list of known formatters
|
|
|
|
Here is a list of all the formatters we tested. Feel free to send a PR to add
|
|
other ones!
|
|
|
|
## [prettier](https://prettier.io/)
|
|
|
|
An opinionated code formatter that supports many languages.
|
|
|
|
```toml
|
|
command = "prettier"
|
|
options = ["--write"]
|
|
includes = [
|
|
"*.css",
|
|
"*.html",
|
|
"*.js",
|
|
"*.json",
|
|
"*.jsx",
|
|
"*.md",
|
|
"*.mdx",
|
|
"*.scss",
|
|
"*.ts",
|
|
"*.yaml",
|
|
]
|
|
```
|
|
|
|
## [Black](https://github.com/psf/black)
|
|
|
|
A python formatter.
|
|
|
|
```toml
|
|
command = "black"
|
|
includes = ["*.py"]
|
|
```
|
|
|
|
## [clang-format](https://clang.llvm.org/docs/ClangFormat.html)
|
|
|
|
A tool to format C/C++/Java/JavaScript/Objective-C/Protobuf/C# code.
|
|
|
|
```toml
|
|
command = "clang-format"
|
|
options = [ "-i" ]
|
|
includes = [ "*.c", "*.cpp", "*.cc", "*.h", "*.hpp" ]
|
|
```
|
|
|
|
Note: This example focuses on C/C++ but can be modified to use with other languages.
|
|
|
|
## Elm
|
|
|
|
```toml
|
|
command = "elm-format"
|
|
options = ["--yes"]
|
|
includes = ["*.elm"]
|
|
```
|
|
|
|
## Go
|
|
|
|
```toml
|
|
command = "gofmt"
|
|
options = ["-w"]
|
|
includes = ["*.go"]
|
|
```
|
|
|
|
## [Ormolu](https://github.com/tweag/ormolu)
|
|
|
|
Haskell formatter. Make sure to use ormolu 0.1.4.0+ as older versions don't
|
|
adhere to the spec.
|
|
|
|
```toml
|
|
command = "ormolu"
|
|
options = [
|
|
"--ghc-opt", "-XBangPatterns",
|
|
"--ghc-opt", "-XPatternSynonyms",
|
|
"--ghc-opt", "-XTypeApplications",
|
|
"--mode", "inplace",
|
|
"--check-idempotence",
|
|
]
|
|
includes = ["*.hs"]
|
|
```
|
|
|
|
## [stylish-haskell](https://github.com/jaspervdj/stylish-haskell)
|
|
|
|
Another Haskell formatter.
|
|
|
|
```toml
|
|
command = "stylish-haskell"
|
|
options = [ "--inplace" ]
|
|
includes = [ "*.hs" ]
|
|
```
|
|
|
|
## [nixpkgs-fmt](https://github.com/nix-community/nixpkgs-fmt)
|
|
|
|
Nix code formatter.
|
|
|
|
```toml
|
|
command = "nixpkgs-fmt"
|
|
includes = ["*.nix"]
|
|
```
|
|
|
|
## rustfmt
|
|
|
|
```toml
|
|
command = "rustfmt"
|
|
options = ["--edition", "2018"]
|
|
includes = ["*.rs"]
|
|
```
|
|
|
|
## [rufo](https://github.com/ruby-formatter/rufo)
|
|
|
|
Rufo is an opinionated ruby formatter. By default it exits with status 3 on
|
|
file change so we have to pass the `-x` option.
|
|
|
|
```toml
|
|
command = "rufo"
|
|
options = ["-x"]
|
|
includes = ["*.rb"]
|
|
```
|
|
|
|
## cargo fmt
|
|
|
|
`cargo fmt` is not supported as it doesn't follow the spec. It doesn't allow
|
|
to pass arbitrary files to be formatted, which treefmt relies on. Use `rustfmt`
|
|
instead (which is what `cargo fmt` uses under the hood).
|
|
|
|
## [shfmt](https://github.com/mvdan/sh)
|
|
|
|
A shell code formatter.
|
|
|
|
```toml
|
|
command = "shfmt"
|
|
options = [
|
|
"-i",
|
|
"2", # indent 2
|
|
"-s", # simplify the code
|
|
"-w", # write back to the file
|
|
]
|
|
includes = ["*.sh"]
|
|
```
|
|
|
|
## terraform
|
|
|
|
terraform fmt only supports formatting one file at the time. See
|
|
https://github.com/hashicorp/terraform/pull/28191
|