# Prettier for Svelte components Format your Svelte components using Prettier. ## Features - Format your HTML, CSS, and JavaScript using prettier - Format Svelte syntax, e.g. each loops, if statements, await blocks, etc. - Format the JavaScript expressions embedded in the Svelte syntax - e.g. expressions inside of `{}`, event bindings `on:click=""`, and more ## VS Code Extension This plugin is bundled in the [Svelte for VS Code](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode) extension. If you only format through the editor, you therefore don't need to do anything in addition. The extension lets you define options through extension-specific configuration. These settings are ignored however if there's any configuration file (`.prettierrc` for example) present. ## Prettier Plugin Installing the plugin as a package allows: - customizing the formatting behavior - using the command line to format - using a different IDE - using the official VS Code [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) extension to format Svelte files ### Compatibility - `prettier-plugin-svelte@3` only works with `prettier@3` - `prettier-plugin-svelte@2` only works with `prettier@2` ### Setup Install Prettier and the plugin as a dev dependency: ```bash npm i --save-dev prettier-plugin-svelte prettier ``` Then create a `.prettierrc` [configuration file](https://prettier.io/docs/en/configuration.html): ```jsonc // .prettierrc { // .. "plugins": ["prettier-plugin-svelte"], "pluginSearchDirs": ["."], // should be removed in v3 "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } ``` If you want to customize some formatting behavior, see section [Options](#options). ### CLI Usage Format your code using the Prettier CLI. ```bash npx prettier --write . # v3 npx prettier --write --plugin prettier-plugin-svelte . # v2 ``` As part of your scripts in `package.json`: ```jsonc // package.json { // .. "scripts": { "format": "prettier --write .", // v3 "format": "prettier --write --plugin prettier-plugin-svelte ." // v2 } } ``` If you want to customize some formatting behavior, see section [Options](#options). ## Options `Configurations are optional` Make a `.prettierrc` file in your project directory and add your preferred [options](https://prettier.io/docs/en/options.html) to [configure Prettier](https://prettier.io/docs/en/configuration.html). When using Prettier through the CLI, you can also pass options through CLI flags, but a `.prettierrc` file is recommended. ### Svelte Sort Order Sort order for `svelte:options`, scripts, markup, and styles. Format: join the keywords `options`, `scripts`, `markup`, `styles` with a `-` in the order you want; or `none` if you don't want Prettier to reorder anything. | Default | CLI Override | API Override | | ------------------------------- | ------------------------------ | --------------------------- | | `options-scripts-markup-styles` | `--svelte-sort-order ` | `svelteSortOrder: ` | > The `options` order option only exists since version 2. If you use version 1 of `prettier-plugin-svelte`, omit that option (so for example only write `scripts-markup-styles`). ### Svelte Strict Mode More strict HTML syntax: Quotes in attributes and no self-closing DOM elements (except void elements). > In version 2 this overruled `svelteAllowShorthand`, which is no longer the case. Example: ```html
``` | Default | CLI Override | API Override | | ------- | ----------------------------- | -------------------------- | | `false` | `--svelte-strict-mode ` | `svelteStrictMode: ` | ### Svelte Allow Shorthand Option to enable/disable component attribute shorthand if attribute name and expression are same. Example: ```html ``` | Default | CLI Override | API Override | | ------- | --------------------------------- | ------------------------------ | | `true` | `--svelte-allow-shorthand ` | `svelteAllowShorthand: ` | ### Svelte Bracket New Line > Deprecated since 2.5.0. Use Prettier 2.4.0 and [bracketSameLine](https://prettier.io/docs/en/options.html#bracket-line) instead. Put the `>` of a multiline element on a new line. Roughly the Svelte equivalent of the [jsxBracketSameLine](https://prettier.io/docs/en/options.html#jsx-brackets) rule. Setting this to `false` will have no effect for whitespace-sensitive tags (inline elements) when there's no whitespace between the `>` of the start tag and the inner content, or when there's no whitespace after the `>` of the end tag. You can read more about HTML whitespace sensitivity [here](https://prettier.io/blog/2018/11/07/1.15.0.html#whitespace-sensitive-formatting). You can adjust whitespace sensitivity through [this setting](https://prettier.io/docs/en/options.html#html-whitespace-sensitivity). Example: ```html
foo
bar
content
foo
bar
content
foo
bar
content
``` | Default | CLI Override | API Override | | ------- | ---------------------------------- | ------------------------------ | | `true` | `--svelte-bracket-new-line ` | `svelteBracketNewLine: ` | ### Svelte Indent Script And Style Whether or not to indent the code inside `