・Next.js: 13.5.1
・Prettier: 3.0.3
・ESLint: 8.49.0
1. 以下のコマンドを入力し、プロジェクトを新規作成します。
$ npx create-next-app@latest
2. 上記のコマンドを実行後に各ツールをインストールするかどうかを聞かれるので以下のように設定します。
√ What is your project named? ... nextjs-sample ← 任意のプロジェクト名を入力
√ Would you like to use TypeScript? ... No / Yes ← Yesを選択
√ Would you like to use ESLint? ... No / Yes ← Yesを選択
√ Would you like to use Tailwind CSS? ... No / Yes ← Noを選択
√ Would you like to use `src/` directory? ... No / Yes ← Yesを選択
√ Would you like to use App Router? (recommended) ... No / Yes ← Yesを選択
√ Would you like to customize the default import alias? ... No / Yes ← Noを選択
3. 以下のコマンドを入力し、アプリを起動します。
$ npm run dev
> nextjs-sample@0.1.0 dev
> next dev
▲ Next.js 13.5.1
- Local: http://localhost:3000
✓ Ready in 3.1s
4. http://localhost:3000にアクセスするとトップ画面が表示されることを確認します。
1. 以下のコマンドを入力し、Prettierをインストールします。
$ npm install --save-dev prettier eslint-config-prettier
※eslint-config-prettierを使用することでESLintとのルールの干渉を回避することができます。
2. プロジェクトのルートに「.prettierrc」ファイルを作成します。このファイルにはフォーマットの設定を記述します。指定できる設定の詳細はこちらをご参照ください。
{
"trailingComma": "all", ← 末尾にカンマをつける
"tabWidth": 2, ← スペースの単位
"semi": false, ← 末尾のセミコロンを使用しない
"singleQuote": true, ← シングルクォートを使用
"jsxSingleQuote": true, ← JSXでシングルクォートを使用
"printWidth": 100 ← 折り返し
}
※上記の設定は一例です。
3. 任意のファイルやディレクトリをフォーマットから除外するには、プロジェクトのルートに「.prettierignore」ファイルを作成します。除外したいファイルやディレクトリを記述します。
# Ignore artifacts:
build
coverage
# Ignore all HTML files:
**/*.html
※上記の設定は一例です。
4. 「.eslintrc.json」のextendsセクションに「prettier」を追加します。
{
"extends": ["next/core-web-vitals", "prettier"]
}
5. 「package.json」のscriptsセクションに以下を追加します。
{
"scripts": {
"format": "prettier . --write",
"format-file-patterns": "prettier \"./src/**/*.{js,jsx,ts,tsx,json,css}\" --write",
"format-ignore-path": "prettier . --write --ignore-path {any file}"
}
}
※上記の設定は一例です。prettierコマンドを使って、コマンドラインから様々な設定を追加したうえでPrettierを実行することができます。 詳細は以下を参照ください。
https://prettier.io/docs/en/cli
6. 以下のコマンドを実行することでフォーマットを実施することができます。
$ npm run format ← フォーマットの実施
$ npm run format-file-patterns ← ファイルの拡張子を指定したうえでフォーマットの実施
$ npm run format-ignore-path ← 除外したいファイルやディレクトリ一覧を記述したファイル(.prettierignoreなど)を指定したうえでフォーマットの実施
// src/app/page.tsx
export const BadComponent = ({ user }) => {
const foo = user();
return <div></div>
};
$ npm run lint
> next lint
✔ No ESLint warnings or errors
1. 以下のコマンドを入力し、プラグインをインストールします。
$ npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin
2. 「.eslintrc.json」を以下のように記述します。
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"next/core-web-vitals",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
}
}
3. ESLintを実行し、エラーが表示されていることを確認します。
// src/app/page.tsx
export const BadComponent = ({ user }) => {
const foo = user();
return <div></div>
};
$ npm run lint
> next lint
src/app/page.tsx
Error: Unsafe assignment of an `any` value. @typescript-eslint/no-unsafe-assignment
Error: 'foo' is assigned a value but never used. @typescript-eslint/no-unused-vars
Error: Unsafe call of an `any` typed value. @typescript-eslint/no-unsafe-call
※Next.jsが提供する「next lint」は対象のディレクトリが制限されているため注意が必要です。詳細は以下を参照ください。
https://nextjs.org/docs/pages/api-reference/next-cli#lint
以上で全ての手順は完了になります