🐙
asdfでFlutterのバージョンを管理する際にsettings.jsonにローカルパスを書かない方法
はじめに
Flutterバージョンをasdfで管理するとき、asdfでインストールされたFlutter SdkのローカルパスをWorkspaceのsettings.jsonに書く必要があります。
settings.json
"dart.flutterSdkPath": "/Users/{yourname}/.asdf/installs/flutter/2.10.0-stable"
この方法だとsettings.jsonをチームで共有するには不都合なので回避策を説明します。
シンボリックリンクを使う
Sdkへのローカルパスにシンボリックリンクを貼って、settings.jsonにはシンボリックリンクを設定するようにします。
- シンボリックリンクを貼る
プロジェクト直下にflutter_sdkという名前でリンクを貼る場合は、プロジェクト直下で以下のコマンドを実行します。
ln -s $HOME/.asdf/installs/flutter/2.10.0-stable flutter_sdk
- 設定を書き換える
Workspaceのsettings.jsonで1で作ったリンクを指定します。
settings.json
"dart.flutterSdkPath": "flutter_sdk"
- リンボリックリンクをignoreする
シンボリックリンクは共有しないので.gitignoreファイルの末尾に以下を追加します。
.gitignore
flutter_sdk
- (オプション)静的解析使ってる場合
sdkのdevディレクトリ内のファイルに反応するので解析対象から外します。
(他にいいやり方があるかも知れないです)
analysis_options.yaml
analyzer:
exclude:
- "flutter_sdk/**"
Flutterバージョンの更新時
Flutterバージョン更新時はリンクを貼り直します。
ln -nfs $HOME/.asdf/installs/flutter/2.10.1-stable flutter_sdk
すでにProjectを開いてる場合はWindow開き直さないと変更を認識しないかもしれないです。(コマンドパレットからReload Windowしましょう。)
最後に
これでsettings.jsonをチームで共有しつつasdfが使えるようになりました。Flutterバージョンの更新時もsettings.jsonを書き換えるか、リンクを貼り直すかで手間も変わらないかと思います。
asdfの導入は以下の記事なんかが参考になります。
Discussion