Next.jsとTypeScriptでLintと整形をセットアップする手順 ESLint Stylelint PrettierとVSCode自動フォーマット
Next.js のTypeScriptプロジェクトへeslint、stylelint、prittierを導入してVSCodeで自動フォーマットするまでの手順をメモしました。
ESLint
ESLintとは?
ESLint は JavaScript ののコード静的検証ツールです。
コードを実行する前にバグを見つけたり、括弧やスペースの使い方などのコードのスタイルやフォーマットを統一したりするのに役立ちます。
公式サイト
Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter
stylelint
stylelintとは?
style は css の静的検証ツールです。
コードを実行する前に明らかなバグを見つけたり、括弧やスペースの使い方などのコードのスタイルやフォーマットを統一したりするのに役立ちます。
公式サイト
Prettier
Prettierとは?
コードを整形してくれるフォーマッタです。
eslintやstylelintはコードの検証がメインの機能であるのに対してPrettierの機能はコードのフォーマットになります。
公式サイト
Prettier · Opinionated Code Formatter
環境
- Mac OS Big SUR 11.3.1
- yarn 1.22.10
- Node.js 14.15.3
- Next.js 10.2.3
- ESLint 7.29.0
- stlelint 13.13
- prettier 2.3
ファイル操作で利用する Unix コマンドについて
基本的なディレクトリ作成やファイル操作は Unix コマンドを利用します。
Unix コマンドについて詳しくはこちらの記事を参考にしてください。
Next.js 環境の構築
前回Next.jsをインストールした環境の状態から変更を加えて行きます。
前回の記事については下記になりますので事前にご確認いただければと思います。
必要なパッケージのインストール
必要なパッケージ
プラグインやルールは必要に応じてしてください。
ESLint × TypeScript × Prettier 最低限
- eslint
- prettier
- eslint-plugin-prettier
- eslint-config-prettier
- @typescript-eslint/parser
- @typescript-eslint/eslint-plugin
必要に応じて
- eslint-config-airbnb-typescript
- eslint-config-next
- eslint-plugin-react
- eslint-plugin-react-hooks
- eslint-plugin-jsx-a11y
stylelint × Prettier 最低限
- stylelint
- prettier
- stylelint-config-prettier
- stylelint-prettier
- stylelint-config-recommended
必要に応じて
- stylelint-config-standard
- stylelint-config-recess-order
パッケージのインストール
プロジェクトディレクトリへ移動
前回作成したプロジェクトのディレクトリへ移動します。
zshcd ~/next-sample
EsLint stylelint Prettierをまとめてインストール
yarn installコマンドでEsLint stylelint Prettierをまとめてインストールします。
zsh$ yarn add -D eslint prettier eslint-plugin-prettier eslint-config-prettier @typescript-eslint/parser @typescript-eslint/eslint-plugin stylelint stylelint-config-prettier stylelint-prettier stylelint-config-recommended
yarn add v1.22.10
// 中略
✨ Done in 44.10s.
インストールしたパッケージを確認
package.jsonを開きインストールされたパッケージを確認します。
json"devDependencies": {
"@types/node": "^15.12.2",
"@types/react": "^17.0.11",
"@typescript-eslint/eslint-plugin": "^4.28.0",
"@typescript-eslint/parser": "^4.28.0",
"babel-plugin-styled-components": "^1.12.0",
"eslint": "^7.29.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"prettier": "^2.3.1",
"stylelint": "^13.13.1",
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-recommended": "^5.0.0",
"stylelint-prettier": "^1.2.0",
"typescript": "^4.3.2"
}
設定ファイルを作成
ESLint
.eslintrc.jsの作成
プロジェクトルートへ.eslintrc.jsを作成します。
zsh$ vi .eslintrc.js
ESLintの設定例
javascript// .eslintrc.js
module.exports = {
root: true,
env: {
browser: true,
es6: true,
node: true
},
parser: "@typescript-eslint/parser",
plugins: [
"@typescript-eslint",
],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
],
settings: {},
rules: {},
};
plugin:prettier/recommended、prettier/@typescript-eslintの指定は
ESLintのルールより優先させるため下へ記載します。
stylelint
.stylelintrc.jsの作成
プロジェクトルートへ.stylelintrc.jsを作成します。
zsh$ vi .stylelintrc.js
stylelintの設定例
javascript// .stylelintrc.js
module.exports = {
extends: [
"stylelint-config-recommended",
"stylelint-prettier/recommended",
"stylelint-config-prettier",
],
rules: {
indentation: 2,
"declaration-colon-newline-after": "always-multi-line",
"value-list-comma-newline-after": "never-multi-line",
},
};
prettier
.prettierrc.jsの作成
プロジェクトルートへ.prettierrc.jsを作成します。
zsh$ vi .prettierrc.js
prettierの設定例
javascript// .stylelintrc.js
module.exports = {
trailingComma: "es5",
tabWidth: 2,
semi: true,
singleQuote: true,
};
npm scriptsの設定
npm scriptsで実行できるようにpackage.jsonへ設定を記述します。
package.jsonへ追記
package.jsonへ追記します。
zsh$ vi package.json
package.jsonの設定例
json// package.json
"scripts": {
"eslint:fix": "eslint . --ext .js,.ts,.jsx,.tsx --fix",
"stylelint:fix": "stylelint . --ext .css,.scss --fix",
}
VSCodeの設定
ファイルを保存したタイミングでフォーマットが実行されるように設定します。
拡張機能のインストール
下記の拡張機能をインストールします。
ESLint
stylelint
Prettier
VSCodeの設定の変更
VSCodeの設定を開き下記設定を追加します。
setting.json
json// setting.json
"editor.formatOnSave": true, // ファイル保存時にデフォルトフォーマッタでフォーマット
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true, // ファイル保存時にESLintでフォーマット
"source.fixAll.stylelint": true // ファイル保存時にstylelintでフォーマット
},
"editor.defaultFormatter": "esbenp.prettier-vscode" // デフォルトフォーマッタをprettierへ設定
捕捉:VSCodeでstylelintの不明なエラー
VSCode Unknown ruleというstylelintエラー
VSCode上で全てのファイルでstylelintによる下記のエラーが発生しました。
consoleUnknown rule no-invalid-position-at-import-rule.stylelint(no-invalid-position-at-import-rule)
Unknown rule no-irregular-whitespace.stylelint(no-irregular-whitespace)
プラグインをアンインストールして解決
hex-ci.stylelint-plusというプラグインが原因でエラーが発生していました。
stylelintのプラグインはvscode-stylelintをインストールしているためhex-ci.stylelint-plusをアンインストールする形で解決しました。
著書
article2025年12月21日Next.jsとTypeScriptでSSGとSSRの型定義を使い方で整理 データ境界のベストプラクティス
article2025年12月21日Next.jsとTypeScriptでLintと整形をセットアップする手順 ESLint Stylelint PrettierとVSCode自動フォーマット
article2025年12月21日Next.jsをインストールしてTypeScript環境をセットアップする手順 最初に動かすまでを整理
article2025年12月21日Next.js 6から7へTypeScriptで移行を運用する手順 実施対応を再現できる形で整理
article2025年12月21日Next.js 5から6へTypeScriptで移行を運用する手順 実施対応を再現できる形で整理
article2025年12月21日Next.jsでGoogleタグマネージャーを設置する使い方 実装サンプルで導入手順を確認する
article2025年12月26日TypeScriptの型縮小を早見表で整理する in instanceof is assertsの使い分け
article2025年12月25日TypeScript satisfiesの使い方を手順で学ぶ 型の過不足と余計なプロパティを確実に検知する
article2025年12月25日PlaywrightとTypeScriptで型安全なE2Eを最短でセットアップする手順
article2025年12月25日TypeScriptの型カバレッジを運用でKPI化する type-coverageで型品質を可視化する
article2025年12月25日TypeScriptの公開APIを壊さない設計 export type interface classの責務分担を整理する
article2025年12月25日YarnとTypeScriptとReactでESLintをゼロからセットアップする手順 Flat ConfigをmacOSで構築する
article2025年12月25日YarnとTypeScriptとReactでESLintをゼロからセットアップする手順 Flat ConfigをmacOSで構築する
article2025年12月23日TypeScriptでよく使うESLintルールを早見表でまとめる 実務の定番を整理
article2025年12月21日TypeScriptでESLintカスタムルールを作る使い方 実装と運用ポイントを整理
article2025年12月21日ESLintのparser設定を比較・検証する Babel TypeScript Flowの違いと選び方
article2025年12月21日TypeScriptプロジェクトの整形とLintをセットアップする手順 PrettierとESLintの最適構成
article2025年12月21日Next.jsとTypeScriptでLintと整形をセットアップする手順 ESLint Stylelint PrettierとVSCode自動フォーマット
article2025年12月21日Next.jsとTypeScriptでLintと整形をセットアップする手順 ESLint Stylelint PrettierとVSCode自動フォーマット
article2018年7月6日TSLintとstyleLintと合わせてPrettierを使ってみる
article2025年12月26日TypeScriptの型縮小を早見表で整理する in instanceof is assertsの使い分け
article2025年12月25日TypeScript satisfiesの使い方を手順で学ぶ 型の過不足と余計なプロパティを確実に検知する
article2025年12月25日PlaywrightとTypeScriptで型安全なE2Eを最短でセットアップする手順
article2025年12月25日TypeScriptの型カバレッジを運用でKPI化する type-coverageで型品質を可視化する
article2025年12月25日TypeScriptの公開APIを壊さない設計 export type interface classの責務分担を整理する
article2025年12月25日YarnとTypeScriptとReactでESLintをゼロからセットアップする手順 Flat ConfigをmacOSで構築する
blogiPhone 17シリーズの発表!全モデルiPhone 16から進化したポイントを見やすく整理
blogGoogleストアから訂正案内!Pixel 10ポイント有効期限「1年」表示は誤りだった
blog【2025年8月】Googleストア「ストアポイント」は1年表記はミス?2年ルールとの整合性を検証
blogGoogleストアの注文キャンセルはなぜ起きる?Pixel 10購入前に知るべき注意点
blogPixcel 10シリーズの発表!全モデル Pixcel 9 から進化したポイントを見やすく整理
blogフロントエンドエンジニアの成長戦略:コーチングで最速スキルアップする方法
review今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
reviewついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
review愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
review週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
review新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
review科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来


