Prettierが動作しない原因の切り分け方 ― まず見るのは出力パネルとデフォルトフォーマッタ設定
Cursorで保存してもPrettierが整形しなくなったとき、疑うべきは拡張機能の故障ではありません。大抵は「デフォルトフォーマッタ」がPrettier以外に切り替わっているか、保存時フォーマットがオフになっています。まずコマンドパレットから「Output」パネルを開き、ドロップダウンで「Prettier」を選んで保存時にログが出るか確認してください。ここに何も出なければPrettier拡張自体が呼ばれていないということなので、設定ファイルの中身を疑うのはまだ早いです。
「デフォルトフォーマッタ」がPrettier以外に変わっていないか確認する
VS Code互換エディタの一般的な設定挙動として、コマンドパレットから「Preferences: Open User Settings (JSON)」を開き、editor.defaultFormatterがesbenp.prettier-vscodeになっているか確認します。経験上、ここが空欄か別拡張のIDになっているケースが多い原因です。ESLintの自動修正拡張やTailwind CSSの拡張など、フォーマット機能を持つ拡張を後から入れると、”[javascript]”のような言語別ブロックだけが上書きされ、JS/TSファイルだけ整形されなくなることがあります。ワークスペース単位の.vscode/settings.jsonに一度書いておけば、案件ごとに選び直す手間はなくなります。
.prettierrcの記述ミスやコード自体は原因ではない理由
Outputパネルにログが出ていないなら、.prettierrcはそもそも読み込まれていません。設定ファイルの構文や対象コードの書き方を疑うのは筋違いです。
ただし例外があります。ログは出ているのに特定のファイルだけ整形されない場合は逆に、.prettierrcの構文エラー、.prettierignoreによる除外、あるいは設定ファイルがプロジェクト直下以外に分散配置されているケースを疑ってください。「ログが出るかどうか」で疑うべき対象がまったく変わる、これが切り分けの要です。
node_modules内のprettierバージョンとCursor拡張の不整合が起こす典型的な失敗パターン
ログは出ているのに整形結果がおかしい、あるいはエラーで止まる場合は、Cursor拡張が呼び出しているPrettier本体のバージョン不整合を疑います。プロジェクトにインストールされたPrettier本体のインストールが壊れていたりpackage.jsonの指定とずれていたりすると、拡張自体は正常でも整形は動きません。
package.jsonのbin・mainの指定からCursorが読み込むprettier本体を特定する
"bin": "./bin/prettier.cjs",
"main": "./index.cjs",
この2行は、Prettierパッケージ(バージョン3.9.6の例)が実行ファイルとしてbin/prettier.cjsを、ライブラリ本体としてindex.cjsを提供していることを示します。node_modules/.bin/prettierが存在しない、あるいはインストール済みのバージョンがpackage.jsonの指定と食い違っていれば、グローバル環境がどれだけ正しく設定されていても整形は失敗します。
確認はターミナルでnpx prettier –versionを実行し、package.jsonのdevDependenciesに書かれた値と一致するか見るだけです。バージョンが表示されない、あるいはコマンド自体がエラーになる場合は、node_modulesを削除してnpm install(またはyarn install)をやり直せば大半は解消します。複数案件を並行する現場ではプロジェクトごとにPrettierのバージョンが異なるのが普通なので、案件を切り替えるたびにこの再インストールで揃え直す運用が現実的です。
本記事のコード・挙動に関する記述は、prettier 3.9.6 の実際のソースコードと照合して確認しています。