kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2021-07-18 - `golang/vscode-go` & `LSP(gopls)` で 巨大な monorepo を開くと `Setting up workspace: Loading packages...` が長時間出続ける件への対応策 #151

Closed kachick closed 3 years ago

kachick commented 3 years ago

TL;DR

  1. Multi-root Workspaces を使い、 monorepo/huge_projects.code-workspace に以下の設定を足す
      {
        "settings": {
          "gopls": {
            "build.directoryFilters": ["-"]
          }
        }
      }
  2. monorepo/microservice-with-golang-n/.vscode/settings.json へ 以下を足す
      {
        "gopls": {
          "build.directoryFilters": []
        }
      }
  3. code monorepo/huge_projects.code-workspace でワークスペースを開くと、大分マシになっている筈(対象プロジェクト数2つで確認したので、本当に巨大な golang project ばっかだとこれでも駄目かもしれない。その時は workspace を分けましょうか・・・)

参考資料

経緯 / History

  1. monorepo で管理されているリポジトリで monorepo/huge_projects.code-workspace 的な Visual Studio Code のワークスペース設定があるのだが、久しぶりにこれを開いたら vscode どころか Mac がフリーズするほどになった。
  2. Open Process Explorer やアクティビティモニターで見ててもあまりよくわからないが、 top を叩くと vscode が自前で持つようになった rg - https://github.com/microsoft/vscode-ripgrep が多数同時起動していた
  3. .gitignore 経由で自動的に外される筈だと思うんだけどなーとは思いつつ、files.exclude, files.watcherExclude, search.exclude といった所に node_modules や vendor/bundle を追加してみたが症状は変わらなかった。
  4. --disable-extensions オプションを付けて起動すると超速起動してくれたので、まぁ拡張機能のどれかなんだろうなぁとは思った。
  5. 比較してみると、重い間は vscode の下のステータスバーに Setting up workspace: Loading packages... がちらちら出続けて居た。これが収まると Mac も平穏を保ちだすので、これでぐぐったところ vscode-go 関係っぽいなとわかった。
  6. 現状 vscode で golang 開発するならこれを使うのは一択っぽいのでどうしたもんかなとは思いつつ config 可能な値を調べてみたら build.directoryFilters を見つけた。
  7. こいつが他の vscode の設定値を無視した独自値であり、且つデフォルトでは全部を見るようなので、JavaScript/TypeScript とか Ruby みたいなのと混在しだすと重くなるっぽい気がしたので全無視をしたら実際軽くなった。
  8. その上で各 golang 系 workspace 内では独自に有効にしてやる事で、「マシ」になった。
  9. 正直これでも vscode 本来の軽快さを考えるとちょっと抵抗があるぐらいに時間はかかるのだけれど、Mac 自体が重くなって他の作業に支障が出るという状況は避けられたので良しとする
  10. が、あれこれやってる中で他の拡張系も on/off したり settings のチューニングも諸々したせいか、最終的に以前の設定で開き直してみても前ほどには Mac が死ななくなったので本当にこれだけが悪いのかはちと怪しい。が、無駄では無いと思う。
  11. golang の issue にこの手の reporting が最近でも結構上がっているし、gopls もまだ絶賛開発中みたいなステータスっぽいので、なにもせんでも近いうちにもっとマシな状況になるのではないか。まぁ、そんなの待ってられないんだけどね。