Next.js にて Prettier を導入する

環境

  • Next.js v15
  • TypeScript v5
  • Sass v1
  • Prettier v3

Prettier とは

Prettier is an opinionated code formatter

とのこと。
コードの品質を保つもの。スタイルガイドのようなもの。
ESLint に似ているが、 ESLint がサポートしていない記述に関するルールの強制ができる。

例えば、タブ派かスペース派か。
みたいなルールがある。

Prettier を試す

構成

Next.js で試す前に、
適当にサンプルを用意して試す。

- sample
		├ .prettierignore
		├ .prettierrc.json
		├ eslint.config.mjs
		├ package.json
		└ test.ts

インストール

ESLint と併用する場合、 ESLint と被る項目があるらしいので、
それを ESLint 側で無視させる eslint-config-prettier というプラグインをインストールする。

$ cd /path/to/your/sample
$ npm init
$ npm install --save-dev eslint-config-prettier
$ npm install --save-dev --save-exact prettier

eslint.config.mjs

eslintConfigPrettier は最後に記述するらしい。

import eslint from '@eslint/js'
import tseslint from 'typescript-eslint'
import eslintConfigPrettier from "eslint-config-prettier"

export default tseslint.config(
	eslint.configs.recommended,
	tseslint.configs.strict,
	tseslint.configs.stylistic,
	{
		rules: {
			"@typescript-eslint/no-unused-vars": ["error", {
				"args": "all",
				"argsIgnorePattern": "^_",
				"caughtErrors": "all",
				"caughtErrorsIgnorePattern": "^_",
				"destructuredArrayIgnorePattern": "^_",
				"varsIgnorePattern": "^_",
				"ignoreRestSiblings": true,
			}],
			"@typescript-eslint/consistent-type-definitions": ["error", "type"],
		},
	},
	eslintConfigPrettier,
)

.prettierignore

コードチェックしないものを追加する。
Next.js 環境下だとこんな感じ。だと思う。多分。

.git
.next

node_modules

*.md

.prettierrc.json

{
	"printWidth": 1000,
	"tabWidth": 2,
	"useTabs": false,
	"semi": false,
	"singleQuote": false,
	"jsxSingleQuote": false,
	"trailingComma": "all",
	"bracketSpacing": true,
	"bracketSameLine": false,
	"arrowParens": "always",
	"vueIndentScriptAndStyle": true,
	"endOfLine": "lf"
}

test.ts



const bool=true;

const obj = {	"test": 'test'
};

function test(v){
	console.log("test")
	if(v){
		console.log("true")
	}
		const str = (v)
			? 'true'
			: `false`
}

const test2 = (obj)=>{
	console.log(obj)
}

test(bool)
test2({k:v})



switch (bool) {
case true:
	break
default:
	break
}




試す

直す必要があるかどうか調べる。

$ npx prettier test.ts --check
Checking formatting...
[warn] prettierTest.ts
[warn] Code style issues found in the above file. Run Prettier with --write to fix.

どう整形されるかを出力する。

$ npx prettier test.ts

出力された内容。

const bool = true

const obj = { test: "test" }

function test(v) {
  console.log("test")
  if (v) {
    console.log("true")
  }
  const str = v ? "true" : `false`
}

const test2 = (obj) => {
  console.log(obj)
}

test(bool)
test2({ k: v })

switch (bool) {
  case true:
    break
  default:
    break
}

ファイルを書き換える。

$ npx prettier test.ts --write
test.ts 24ms

Next.js にて Prettier の設定をする

インストール

$ cd /path/to/your/project/app
$ npm install --save-dev eslint-config-prettier
$ npm install --save-dev --save-exact prettier

.prettierignore

同上

.prettierrc.json

同上

.eslintrc.json

これも prettier を最後に記述する。

{
	"extends": ["next/core-web-vitals", "next/typescript", "prettier"],
	"rules": {
		"@typescript-eslint/no-unused-vars": [
			"error",
			{
				"args": "all",
				"argsIgnorePattern": "^_",
				"caughtErrors": "all",
				"caughtErrorsIgnorePattern": "^_",
				"destructuredArrayIgnorePattern": "^_",
				"varsIgnorePattern": "^_",
				"ignoreRestSiblings": true
			}
		],
		"@typescript-eslint/consistent-type-definitions": ["error", "type"]
	}
}

package.json

コマンドで Prettier を行うようにする。
ファイルの指定方法はこちら。
どういったコマンドにするかはプロジェクト毎に決める。
一旦これで。

{
	"scripts": {
		"prettier": "npx prettier --write './**/*.{ts,tsx,json,scss}'",
		"format:check": "npx prettier --check './**/*.{ts,tsx,json,scss}' && next lint"
	}
}

試す

$ npm run prettier
$ npm run format:check

テキストエディタ

テキストエディタで保存した直後に Prettier を行いたい場合はこちら。