VSCode の Prettier 拡張が動かなくなった場合
rm your/workspace/package.json
のようにしてローカルの package.json
を消してみてください!
あほみたいな話ですが、 治安の悪い Monorepo で作業をしていると、誰かがルートの package.json
を壊してしまい npm install
できなくなるという事があります。VSCode Prettier 拡張は package.json
が存在する場合何がなんでもローカルの prettier 実行ファイルを探そうとするので、YAML や Markdown など Javascript プロジェクトとは関係無いファイルの整形までできなくなります。その場合、ばっさり package.json
を消す以外対処法が無いという事が分かりました。
以下詳しい説明
- Prettier とは? 色々な言語で書いたファイルを整形してくれるツール。Javascript プロジェクトで使われる。
- VSCode Prettier 拡張 を使うと VSCode 無いで JSON や YAML Markdown などを整形してくれて便利。
Prettier 拡張は次の順序で prettier コマンドを探します。
- package.json があればワークスペースににインストールされている prettier を探す。
- もしも
prettier.resolveGlobalModules
がtrue
に設定してあれば、グローバルにインストールされた prettier を探す。- しかしワークスペースの package.json が壊れていればグローバルの prettier を探せない!
- prettier がどこにも無ければ Prettier 拡張にバンドルされている prettier を使う。
- しかしこれもワークスペースの package.json が壊れていればダメでした。
という事で治安の悪い Monorepo に壊れた package.json
がある場合消すしか無いという話でした。