Skip to content

Formatters

codeflow uses language specific formatters.

codeflow 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

codeflow 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.

FormatterExtensionsRequirements
gofmt.gogofmt command available
mix.ex, .exs, .eex, .heex, .leex, .neex, .sfacemix command available
prettier.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and moreprettier dependency in package.json
biome.js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml, and morebiome.json(c) config file
zig.zig, .zonzig command available
clang-format.c, .cpp, .h, .hpp, .ino, and more.clang-format config file
ktlint.kt, .ktsktlint command available
ruff.py, .pyiruff command available with config
rubocop.rb, .rake, .gemspec, .rurubocop command available
standardrb.rb, .rake, .gemspec, .rustandardrb command available
htmlbeautifier.erb, .html.erbhtmlbeautifier command available

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


How it works

When codeflow 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 codeflow config.

codeflow.json
{
"$schema": "https://codeflow.ai/config.json",
"formatter": { }
}

Each formatter configuration supports the following:

PropertyTypeDescription
disabledbooleanSet this to true to disable the formatter
commandstring[]The command to run for formatting
environmentobjectEnvironment variables to set when running the formatter
extensionsstring[]File extensions this formatter should handle

Let’s look at some examples.


Disabling formatters

To disable a specific formatter, set disabled to true:

codeflow.json
{
"$schema": "https://codeflow.ai/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:

codeflow.json
{
"$schema": "https://codeflow.ai/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.