Skip to content

Formatters

SlopCode automatically formats files after they are written or edited using language-specific formatters. This ensures that the code that is generated follows the code styles of your project.


Built-in

SlopCode comes with several built-in formatters for popular languages and frameworks. Below is a list of the formatters, supported file extensions, and commands or config options it needs.

Formatter Extensions Requirements
air .R air command available
biome .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and more biome.json(c) config file
cargofmt .rs cargo fmt command available
clang-format .c, .cpp, .h, .hpp, .ino, and more .clang-format config file
cljfmt .clj, .cljs, .cljc, .edn cljfmt command available
dart .dart dart command available
dfmt .d dfmt command available
gleam .gleam gleam command available
gofmt .go gofmt command available
htmlbeautifier .erb, .html.erb htmlbeautifier command available
ktlint .kt, .kts ktlint command available
mix .ex, .exs, .eex, .heex, .leex, .neex, .sface mix command available
nixfmt .nix nixfmt command available
ocamlformat .ml, .mli ocamlformat command available and .ocamlformat config file
ormolu .hs ormolu command available
oxfmt (Experimental) .js, .jsx, .ts, .tsx oxfmt dependency in package.json and an experimental env variable flag
pint .php laravel/pint dependency in composer.json
prettier .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and more prettier dependency in package.json
rubocop .rb, .rake, .gemspec, .ru rubocop command available
ruff .py, .pyi ruff command available with config
rustfmt .rs rustfmt command available
shfmt .sh, .bash shfmt command available
standardrb .rb, .rake, .gemspec, .ru standardrb command available
terraform .tf, .tfvars terraform command available
uv .py, .pyi uv command available
zig .zig, .zon zig command available

So if your project has prettier in your package.json, SlopCode will automatically use it.


How it works

When SlopCode writes or edits a file, it:

  1. Checks the file extension against all enabled formatters.
  2. Runs the appropriate formatter command on the file.
  3. Applies the formatting changes automatically.

This process happens in the background, ensuring your code styles are maintained without any manual steps.


Configure

You can customize formatters through the formatter section in your SlopCode config.

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": {}
}

Each formatter configuration supports the following:

Property Type Description
disabled boolean Set this to true to disable the formatter
command string[] The command to run for formatting
environment object Environment variables to set when running the formatter
extensions string[] File extensions this formatter should handle

Let’s look at some examples.


Disabling formatters

To disable all formatters globally, set formatter to false:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": false
}

To disable a specific formatter, set disabled to true:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}

Custom formatters

You can override the built-in formatters or add new ones by specifying the command, environment variables, and file extensions:

slopcode.json
{
"$schema": "https://slopcode.dev/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}

The $FILE placeholder in the command will be replaced with the path to the file being formatted.