Featured image of post Nuxt3の環境にPrettierを導入する

Nuxt3の環境にPrettierを導入する

これはなに Link to this heading

Nuxt.js 3の環境にPrettierを導入する方法のメモ。

はじめに Link to this heading

本記事の執筆時点では、Nuxt.jsのドキュメント によると、ESLintはフォーマットを実行しない。そのため、フォーマットのためには、後述するようにPrettierなどのツールを利用するよう書かれている。

At the moment, this configuration will not format your files; you can set up Prettier or another tool to do so.

Prettierの利用についてはここ で議論されていたようだが、どうやらESLintでフォーマットまで行うのをやめたようだ。

Prettierの導入 Link to this heading

まず、Prettierをインストールする。

npm install --save-dev prettier

ESLintを導入している場合は、prettier eslint-config-prettierも入れる。これは、Prettierと競合するESLintの設定を無効化するconfigである。

npm install --save-dev eslint-config-prettier

また、ESLintを導入している場合は、ESLintの設定ファイル.eslintrc.cjsにPrettier用の設定を追加する。これを追加することで、ESLintとPrettierの住み分けができる。必ずextends一番最後に入れる。

.eslintrc.cjs
module.exports = {
  root: true,
  extends: ['@nuxt/eslint-config', 'prettier'],
};

次に、Prettierの設定ファイルである.prettierrc.jsonを作成し、任意のオプションを設定する。設定できるオプションの詳細はPrettier公式 を参照してほしい。下記に例を示す。

.prettierrc.json
{
  "printWidth": 80,
  "tabWidth": 2,
  "semi": true,
  "singleQuote": true,
  "vueIndentScriptAndStyle": true
}

その後、package.jsonにフォーマット用のコマンドを追加する。下記では、fixコマンドも追加し、ESLintと同時に実行できるようにしている。

package.json
{
  "scripts": {
    "format": "prettier . --write",
    "fix": "eslint --fix --ignore-path .gitignore . && prettier . --write"
  },
}

これでPrettierによるフォーマットを実行できるはずなので、以下のコマンドを実行してみる。

npm run format

自動修正もできるか確認する。

npm run fix

VS CodeにPrettierの拡張機能 をインストールし、以下のVS Codeの設定を追記すれば、ファイル保存時に自動でESLintを実行できる。

settings.json
{
  // formatter
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.formatOnPaste": true,
  "editor.formatOnType": true
}

ちなみにVS Codeの場合、Prettierを入れた直後はESLintとバッティングしてうまく動作しないことがある。その場合は、一度VS Codeを再起動する。

参考文献・URL Link to this heading

Code Style · Nuxt Concepts's image

Code Style · Nuxt Concepts

Nuxt supports ESLint out of the box

nuxt.com
Next.jsでWebアプリを作るときの環境構築手順メモ's image

Next.jsでWebアプリを作るときの環境構築手順メモ

Next.jsでWebアプリを作るときの環境構築手順メモ

notes.nakurei.com
Licensed under CC BY-NC-SA 4.0
最終更新 2月 03, 2024
Hugo で構築されています。
テーマ StackJimmy によって設計されています。