On this page
deno fmt
Deno ships with a built-in code formatter based on dprint that auto-formats your code to a consistent style. For a broader overview, see Linting and Formatting.
Basic usage Jump to heading
Format all supported files in the current directory:
deno fmt
Format specific files or directories:
deno fmt main.ts src/
Watch mode Jump to heading
Automatically re-format files when they change:
deno fmt --watch
Check formatting in CI Jump to heading
Use --check to verify files are formatted without modifying them. The command
exits with a non-zero status code if any files are unformatted:
deno fmt --check
Add --fail-fast to stop on the first unformatted file instead of reporting all
of them, which is useful in large codebases:
deno fmt --check --fail-fast
Formatting stdin Jump to heading
Format code piped through stdin — useful for editor integrations:
cat main.ts | deno fmt -
Configuring the formatter Jump to heading
Customize formatting options in your deno.json:
{
"fmt": {
"useTabs": false,
"lineWidth": 80,
"indentWidth": 2,
"semiColons": true,
"singleQuote": false,
"proseWrap": "preserve"
}
}
See the Configuration page for all available options.
Inheriting settings from .editorconfig Jump to heading
deno fmt also reads .editorconfig files and
uses them to fill in any formatting option you have not set elsewhere. The
precedence, from highest to lowest, is:
- CLI flags (
--indent-width,--use-tabs, and so on) - The
fmtblock indeno.json .editorconfig- Built-in defaults
So .editorconfig only supplies values you have not already configured through
a flag or deno.json. Properties such as indent_style, indent_size, and
max_line_length map onto the corresponding deno fmt options.
Including and excluding files Jump to heading
Specify which files to format in deno.json:
{
"fmt": {
"include": ["src/"],
"exclude": ["src/testdata/", "src/generated/**/*.ts"]
}
}
You can also exclude files from the command line:
deno fmt --ignore=dist/,build/
Supported file types Jump to heading
| File Type | Extension | Notes |
|---|---|---|
| JavaScript | .js, .cjs, .mjs |
|
| TypeScript | .ts, .mts, .cts |
|
| JSX | .jsx |
|
| TSX | .tsx |
|
| Markdown | .md, .mkd, .mkdn, .mdwn, .mdown, .markdown |
|
| JSON | .json |
|
| JSONC | .jsonc |
|
| CSS | .css |
|
| HTML | .html |
|
| XML | .xml |
|
| SVG | .svg |
|
| Nunjucks | .njk |
|
| Vento | .vto |
|
| YAML | .yml, .yaml |
|
| SCSS | .scss |
|
| LESS | .less |
|
| Jupyter Notebook | .ipynb |
|
| Astro | .astro |
Requires --unstable-component flag or "unstable": ["fmt-component"] config option. |
| Svelte | .svelte |
Requires --unstable-component flag or "unstable": ["fmt-component"] config option. |
| Vue | .vue |
Requires --unstable-component flag or "unstable": ["fmt-component"] config option. |
| SQL | .sql |
Requires --unstable-sql flag or "unstable": ["fmt-sql"] config option. |
deno fmt can format code snippets in Markdown files. Snippets must be
enclosed in triple backticks and have a language attribute.
The markup formatters (HTML, XML, SVG, and the --unstable-component formats)
and the style formatters (CSS, SCSS, and Less) were rebuilt to only adjust
whitespace. They never reorder or rewrite tokens, and they pass unknown syntax
(vendor extensions, future at-rules, template expressions, even broken markup)
through unchanged instead of erroring, so formatting is more robust on
real-world files.
Ignoring code Jump to heading
JavaScript / TypeScript / JSONC Jump to heading
Ignore formatting code by preceding it with a // deno-fmt-ignore comment:
// deno-fmt-ignore
export const identity = [
1, 0, 0,
0, 1, 0,
0, 0, 1,
];
Or ignore an entire file by adding a // deno-fmt-ignore-file comment at the
top of the file.
Markdown / HTML / CSS Jump to heading
Ignore formatting next item by preceding it with <!--- deno-fmt-ignore -->
comment:
<html>
<body>
<p>
Hello there
<!-- deno-fmt-ignore -->
</p>
</body>
</html>
To ignore a section of code, surround the code with
<!-- deno-fmt-ignore-start --> and <!-- deno-fmt-ignore-end --> comments.
Or ignore an entire file by adding a <!-- deno-fmt-ignore-file --> comment at
the top of the file.
YAML Jump to heading
Ignore formatting next item by preceding it with # deno-fmt-ignore comment:
# deno-fmt-ignore aaaaaa: bbbbbbb
deno fmt [OPTIONS] [files]...Auto-format various file types.
deno fmt myfile1.ts myfile2.ts
Supported file types are:
JavaScript, TypeScript, Markdown, JSON(C) and Jupyter Notebooks
Supported file types which are behind corresponding unstable flags (see formatting options):
HTML, CSS, SCSS, LESS, YAML, Svelte, Vue, Astro and Angular
Format stdin and write to stdout:
cat file.ts | deno fmt -
Check if the files are formatted:
deno fmt --check
Ignore formatting code by preceding it with an ignore comment:
// deno-fmt-ignore
Ignore formatting a file by adding an ignore comment at the top of the file:
// deno-fmt-ignore-file
Options Jump to heading
Configure different aspects of deno including TypeScript, linting, and code formatting.
Typically the configuration file will be called deno.json or deno.jsonc and
automatically detected; in that case this flag is not necessary.
--no-configDisable automatic loading of the configuration file.
--permit-no-filesDon't return an error code if no files were found.
Formatting options Jump to heading
--checkCheck if the source files are formatted.
--ext<ext>Set content type of the supplied file.
--fail-fastStop checking files on first format error.
--ignore<ignore>Ignore formatting particular source files.
--indent-width<indent-width>Define indentation width [default: 2]
--line-width<line-width>Define maximum line width [default: 80]
--no-editorconfigDon't read .editorconfig files to infer formatting options [default: false]
--no-semicolons<no-semicolons>optionalDon't use semicolons except where necessary [default: false]
--prose-wrap<prose-wrap>Define how prose should be wrapped [default: always]
--single-quote<single-quote>optionalUse single quotes [default: false]
--unstable-componentEnable formatting Svelte, Vue, Astro and Angular files.
--unstable-sqlEnable formatting SQL files.
--use-tabs<use-tabs>optionalUse tabs instead of spaces for indentation [default: false]
File watching options Jump to heading
--no-clear-screenDo not clear terminal screen when under watch mode.
--watchWatch for file changes and restart process automatically. Only local files from entry point module graph are watched.
--watch-exclude<FILES>optionalExclude provided files/patterns from watch mode.