Prettier
PrettierはJavaScriptやTypeScriptなど、様々な言語をサポートするコードフォーマッタです。
Prettierの実行方法
CLI
後述するESLintとの連携により、ESLintの実行時にPrettierが実行されます。 ESLintの実行方法は、ESLint - ESLintの実行方法 - CLIを参照してください。
エディタ、IDE
エディタやIDEにプラグインなどを設定することで、コーディング中に自動でフォーマットしてくれます。
Visual Studio CodeでPrettierを有効にする方法については、Visual Studio Code - Lint、フォーマッタを参照してください。
その他のエディタやIDEについては、Prettierの公式ページにあるEditor Integrationを参照してください。
ESLintとの連携
eslint-plugin-prettierを導入して、ESLintの実行時にPrettierを実行します。 Prettierのルールに準拠していないコードは、ESLintの警告として表示されるようになります。
また、Prettierのいくつかのルールは、ESLintのルールと競合する場合があります。
競合を解決するために、eslint-config-prettierを導入します。eslint-config-prettierは、Prettierと競合するESLintのルールを無効化するためのESLintプラグインです。
eslint-plugin-prettierやeslint-config-prettierの設定は、eslint-config-universeのuniverse/nativeで実施されます。
このアプリでは、universe/nativeをextendsしているため、eslint-plugin-prettierやeslint-config-prettierの設定を個別に記載する必要はありません。
EditorConfigとの連携
Prettierのいくつかのルールは、EditorConfigのルールと同じものがあります。
同じルールに対して、PrettierとEditorConfigの両方に設定をした場合はPrettierの設定が優先されます。 EditorConfigにしか設定をしていない場合は、EditorConfigの設定をPrettierが使用します。
適用しているルール一覧
このアプリでは、Prettierのルールを.prettierrc.jsに定義しています。
適用している全てのルールは以下のとおりです。
| オプション | 設定値 | デフォルト値からの変更 |
|---|---|---|
| Print Width | EditorConfig(max_line_length)の設定値 | デフォルトは80です。 このアプリでは、120に変更しています。 |
| Tab Width | EditorConfig(indent_size)の設定値 | - |
| Tabs | EditorConfig(indent_style)の設定値 | - |
| Semicolons | true | - |
| Quotes | true | デフォルトはfalseです。 このアプリではダブルクオートではなく、シングルクオートに統一します。 |
| Quote Props | as-needed | - |
| JSX Quotes | false | - |
| Trailing Commas | all | - |
| Bracket Spacing | false | デフォルトはtrueです。 このアプリでは、 import {React} from 'React'のように、{}の間にスペースを含まないようにします。 |
| Bracket Line | true | デフォルトはfalseです。 JSXのタグが複数行になったときに、最後の >の前で改行しないようにします。 |
| [Deprecated] JSX Brackets | true | デフォルトはfalseです。 IntelliJ IDEAのPrettierプラグインなど、Bracket Lineがまだサポートされていないものがあるので設定しています。 |
| Arrow Function Parentheses | avoid | デフォルトはalwaysです。 アロー関数の引数に不要なカッコを付けないようにします。 |
| Range | rangeStart: 0rangeEnd: Infinity | - |
| Parser | None | - |
| File Path | None | - |
| Require Pragma | false | - |
| Insert Pragma | false | - |
| Prose Wrap | preserve | - |
| HTML Whitespace Sensitivity | css | - |
| Vue files script and style tags indentation | false | - |
| End of Line | EditorConfig(end_of_line)の設定値 | - |
| Embedded Language Formatting | auto | - |
| Single Attribute Per Line | false | - |