既存の Next.js プロジェクトに Prettier を導入する
前回は ESLint を導入したので、今回は Prettier を導入していきます。
Prettier と ESLint を併用する際のコンフリクトの解消や、 Visual Studio Code での自動フォーマット設定も行っていきます。
パッケージのインストール
ESLint にはコードフォーマット用のルールも含まれていて、 Prettier と併用するときに、コンフリクトが生じることがあります。
このコンフリクトを解消するためには、 eslint-config-prettier を使います。これは Prettier とコンフリクトする可能性のある ESLint ルールを無効にするためのものです。
なので、今回は Prettier 本体である prettier と、コンフリクト解消用の eslint-config-prettier の2つのパッケージをインストールします。
yarn add -D prettier eslint-config-prettiereslint-config-prettier の設定
次に、コンフリクトするルールを無効にするために、 .eslintrc.json の "extends" に "prettier" を追加します。
{
"extends": ["next/core-web-vitals", "prettier"]
}"prettier" は最後に書く必要があるので要注意。なぜなら、他の設定を上書きするからです。
コンフリクトがないかをチェックする
eslint-config-prettier は、 CLI ツールも提供しており、これを使うことでコンフリクトの有無をチェックできます。
yarn eslint-config-prettier '**/*.{js,jsx,ts,tsx}'現状では、特にルールの追加などを行っていないので、コンフリクトは見つかりません。コンフリクトがない場合、次のように表示されます。
No rules that are unnecessary or conflict with Prettier were found.コンフリクトがある場合
それでは、試しにコンフリクトするルールを追加してみましょう。 .eslintrc.json に次のルールを追加します。
{
"extends": ["next/core-web-vitals", "prettier"],
"rules": {
"indent": "error"
}
}もう一度 eslint-config-prettier を実行してみます。
% yarn eslint-config-prettier '**/*.{js,jsx,ts,tsx}'
The following rules are unnecessary or might conflict with Prettier:
- indentすると、コンフリクトするルールがリストアップされます。このルールは不要なので、 .eslintrc.json から削除しておきましょう。
これで eslint-config-prettier に関する設定は完了です。次は Prettier の設定に進みます。
Prettier の設定
Prettier の設定には、 .prettierrc.json と .prettierignore というファイルを使います。前者は設定ファイルで、後者はフォーマットしたくないファイルを指定するものです。
まずは、それらのファイルを作成します。
touch .prettierrc.json .prettierignore.prettierrc.json
.prettierrc.json の内容は、次のようにします。
{
"singleQuote": true
}基本的にデフォルトの値を使いたいので、 "singleQuote" のみ true にしています。 Options · Prettier に設定可能な項目がリストアップされているので、これを参考に適宜調整してください。
.prettierignore
.prettierignore の内容は、次のようにします。
node_modules
.next
yarn.lock
public
postsこれで、リストアップしたファイルやディレクトリ内のファイルはフォーマットされません。
これで Prettier の設定は完了です。
Prettier を使う
prettier --write
Prettier を使うには、次のコマンドを実行します。
yarn prettier --write .これでフォーマット対象のファイルがすべてフォーマットされます。
prettier --check
次のように --check オプションを使うと、フォーマットされているかどうかをチェックできます。このとき、ファイルは上書きされません。
yarn prettier --check .すべてフォーマット済みであれば次のように表示されます。
All matched files use Prettier code style!package.json に script を追加する
Prettier を実行するときに yarn prettier --write . と入力するのは手間なので、 package.json に script を追加しましょう。
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"format": "prettier --write ."
},こうすることで yarn format と実行するだけで、フォーマット対象のファイルがすべてフォーマットされます。
さらに、エディターの設定を行うと、ファイル保存時に自動フォーマットされてとても便利です。なので、その設定も行っていきましょう。
Visual Studio Code の設定
今回は Visual Studio Code での設定方法を解説します。
まずは、 Prettier - Code formatter - Visual Studio Marketplace から拡張機能をインストールし、有効化します。
次に、デフォルトのフォーマッターとして Prettier を使うために、 Visual Studio Code の settings.json に次の項目を追加します。併せて "editor.formatOnSave" を true にしています。
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
}これでファイル保存時に自動的にフォーマットされます。
さいごに
前回 ESLint を設定し、今回は Prettier を設定したので、ようやく環境が整いました。
次は、 Tailwind CSS を使ってスタイリングを行っていく予定です。
参考