🐙

asdfでFlutterのバージョンを管理する際にsettings.jsonにローカルパスを書かない方法

2022/02/06に公開

はじめに

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にはシンボリックリンクを設定するようにします。

  1. シンボリックリンクを貼る
    プロジェクト直下にflutter_sdkという名前でリンクを貼る場合は、プロジェクト直下で以下のコマンドを実行します。
ln -s $HOME/.asdf/installs/flutter/2.10.0-stable flutter_sdk
  1. 設定を書き換える
    Workspaceのsettings.jsonで1で作ったリンクを指定します。
settings.json
"dart.flutterSdkPath": "flutter_sdk"
  1. リンボリックリンクをignoreする
    シンボリックリンクは共有しないので.gitignoreファイルの末尾に以下を追加します。
.gitignore
flutter_sdk
  1. (オプション)静的解析使ってる場合
    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の導入は以下の記事なんかが参考になります。
https://blog.dalt.me/2730

GitHubで編集を提案

Discussion