Prettier の設定ファイル (.prettierrc) が読み込まれない
Prettier は cosmiconfig で `.prettierrc` 系を検出する。
ファイル名やコメント付き JSON、monorepo の階層がずれていると無視される。
`prettier --find-config-path <file>` で実際に解決される設定パスを確認するのが最短。
#prettier#config#prettierrc#cosmiconfig#vscode
公開:
要約
Prettier の設定は cosmiconfig が package.json の "prettier" キー、.prettierrc、.prettierrc.json、.prettierrc.{js,cjs,mjs}、prettier.config.{js,cjs,mjs} を順に探す。
命名や配置が外れると黙って既定値で整形され、tabWidth や singleQuote の指定が反映されない。prettier --find-config-path で実際に検出されるパスを確認するのが原因切り分けの起点になる。
よくある原因
- ファイル名の誤り:
prettierrc.json(先頭ドット無し)やprettier.jsonは対象外。
サポート対象は Configuration File に列挙されている。 - JSON 構文エラー:
.prettierrc.jsonでコメントや末尾カンマを書くと cosmiconfig がパースに失敗して読み込めない。
JSON5 / JSONC ではない。 - monorepo の階層: Prettier は整形対象ファイルから上位に向かって探す。
packages/web/src/foo.tsを整形するなら、packages/web/か repo root に.prettierrcが必要。 - エディタ拡張のバージョン違い: VS Code の
esbenp.prettier-vscodeがバンドルする Prettier と、node_modulesの Prettier の差で挙動が変わる。
解決策
1. 検出パスを確認する
npx prettier --find-config-path src/index.ts何も出ない場合は 設定が見つかっていない。
期待した .prettierrc のパスが表示されるまで原因をたぐる。
2. ファイル名と書式を公式に合わせる
{
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "all"
}コメントを書きたければ .prettierrc.cjs にする。
module.exports = {
tabWidth: 2,
singleQuote: true,
};3. ワークスペースの Prettier を指す
.vscode/settings.json:
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"prettier.prettierPath": "./node_modules/prettier"
}node_modules の Prettier を強制すれば CLI と同じバージョンで動く。