Skip to content

Supported Languages

gruft supports a variety of languages and markup types. Below is a list of supported languages and the formatters and linters used for each.

Key

  • ✅: Supported
  • 🚫: Not in progress
  • ⌛️: In progress
  • ⚠️: Partially supported (with some caveats)

Formatters

Language/MarkupFormatterExtensionDefaultStatus
Astromarkup_fmt.astro⌛️
CSSBiome.css🚫
CSSMalva.css🚫
Gogofumpt.go🚫
HTMLmarkup_fmt.html,.htm⌛️
JavaScriptBiome.js,.cjs,.mjs
JavaScriptdprint.js,.cjs,.mjs🚫
Jinjamarkup_fmt.jinja, .jinja2⌛️
JSONBiome.json
JSONdprint.json⌛️
JSONCBiome.jsonc
JSONCdprint.jsonc⌛️
JSXBiome.jsx
JSXdprint.jsx⌛️
Jupyterdprint🚫
LessMalva🚫
Markdowndprint🚫
Nunjucksmarkup_fmt.njk⌛️
PythonRuff🚫
SassMalva🚫
SCSSMalva🚫
Shell (Bash)shfmt.bash,.sh
Shell (Bats)shfmt.bats,.sh
Shell (POSIX)shfmt.sh
Shell (MirBSD Korn)shfmt.mksh,.sh
SQLsqlformat-rs.sql
Sveltemarkup_fmt⌛️
TOMLtaplo.toml
Twigmarkup_fmt.twig⌛️
TypeScriptBiome.ts,.cts,.mts
TypeScriptdprint.ts,.cts,.mts🚫
TSXBiome🚫
TSXdprint🚫
Ventomarkup_fmt.vto⌛️
Vuemarkup_fmt.vue⌛️
YAMLyamlfmt🚫

Linters

Currently, linting is not supported but is on the roadmap. Track progress on GitHub.

Language/MarkupLinterDefaultStatus
JavaScriptBiome🚫
JavaScriptoxlint🚫
JSONBiome🚫
JSONCBiome🚫
JSXBiome🚫
JSXoxlint🚫
PythonRuff🚫
Shellshellcheck🚫
TypeScriptBiome🚫
TypeScriptoxlint🚫
TSXBiome🚫
TSXoxlint🚫

Special Files

Certain well-known files or extensions are specially included into our language matcher to ensure they are formatted correctly.

NameFile/ExtensionLanguage
dotenv.env,.env.*Shell (Bash)
hostshostsShell (Bash)
JvmOptionsjvm.options,*.vmoptionsShell (Bash)
nvmrc.node-version,.nvmrcShell (Bash)
properties.propertiesShell (Bash)

Contributing

For any issues regarding formatters and linters, please make an issue in the gruft repository and we'll upstream any source issues.

Also, consider starring any tools used to support them as well!