フロントエンドエンジニアの田中です。 今回、プロジェクトにコードフォーマットのプラグインであるPrettierを導入しました。 元々、ESLintを使用してコードの品質担保をしていたのでPrettierとの競合が起きないよう設定も行いました。
Prettierとは
Prettier はソースコードを整形してくれるコードフォーマットのプラグインで、以下のような特徴があります。
- 多くの言語に対応(ES6, JSX, TypeScript, CSS, SCSS …etc)
- ルールの設定が可能
- ESLintとの連携が可能
導入の目的
下記に示している導入前の状況と課題を解決するべく、Prettierを導入して共通のコード整形の自動化、共有することが目的です。
状況
- コードフォーマットをAtomエディタのプラグイン(Atom beautify)で行っている
課題
- バックエンドエンジニアがAtomを立ち上げるのが面倒(各自、普段使用しているエディタが違う)
- 個々の環境を同じにするのが面倒
導入
必要なプラグインをインストールします。
プラグイン | 説明 |
---|---|
prettier | コード整形ツール |
onchange | ファイルに変更があった時に処理を実行する |
eslint-config-prettier | ESLintとPrettierの重複するルールを無効化する (Prettierが整形した箇所に関してエラーを出さなくする) |
eslint-plugin-prettier | PrettierのルールをESLintに読み込む |
npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier onchange
package.jsonのscriptsに実行コマンドを追記します。 (今回はPrettierを npm scripts で動かします)
package.json
"scripts": { "start": "onchange './src/scripts/**/*.{js,jsx}' -- prettier --write --single-quote --trailing-comma es5 {{changed}}", "prettier": "prettier --write --single-quote --trailing-comma es5 './src/scripts/**/*.{js,jsx}’, },
- npm run prettier:Prettier単体での処理を実行
- npm start:ファイル保存時にPrettier処理を実行
ここまででPrettierの導入は完了です。 しかし、このままでは元々導入していたESLintとルールが違い競合を起こしてしまいましたので、 Prettierで整形したコードについてエラーを吐かないように設定しました。
.eslintrc
{ "extends": [ "prettier", "prettier/react", ], "env": { "es6": true, }, "plugins": [ "react", "prettier", ], "parserOptions": { "sourceType": "module" }, }
上記で設定完了です。
効果
導入したばかりですが、開発者のエディタによって差異があることや、各自のエディタ設定を合わせる必要がなくなり、「導入の目的」で挙げていた課題について解決することができました。
まとめ
最初にお伝えしたようにPrettierでは様々な言語に対応していますが、今回は導入の第一歩として、JS, JSXファイルの設定をしていきました。今後CSS(SCSS)も導入予定です。 ESLintのコードルールをそのままとはいきませんでしたが(PrettierよりもESLintの方が細かい設定できるため)、Prettierはコード整形、ESLintは構文チェックとして利用していくのが良さそうです。