🦄

【Dart】melosがさらに使いやすくなってた

2023/12/08に公開

公式ドキュメントを見返したら進化してた

改めてドキュメントを見返してみると、結構便利なものが増えていました。
「そがいなもん、わしゃ知っとったわいや」 というものかもしれませんが、個人的に便利だと感じたものを書こうかと思います。

Shared dependencies

公式ドキュメントより拝借。

melos.yaml
command:
  bootstrap:
    environment:
      sdk: ">=3.0.0 <4.0.0"
      flutter: ">=3.0.0 <4.0.0"
    dependencies:
      collection: ^1.18.0
      integral_isolates: any
      uni_links2:
      uni_links_macos:
        git: https://github.com/SamJakob/uni_links_macos.git
    
    dev_dependencies:
      build_runner: ^2.3.3

melosパッケージ内の複数箇所で使うパッケージたちはこのように記載することで、bootstrapコマンドを実行した際に記載したバージョンに更新されます(使用していないパッケージのpubspec.yamlに新たに追加されることはありません)。

これにより、パッケージ間でのバージョン差異がなくなり、スムーズな開発を行えるようになりました。
Changelogを見たところ、恐らく3.2.0以降で使用可能です。

renovateとかのバージョン更新のやつでここに記載したパッケージはpubspec.yamlで見なくてもいいよってしたい場合にはどうすればいいんでしょうね...(もし、知見ありましたらご教授いただきたいです)。

Combining with filters

公式ドキュメントより拝借。

melos bootstrap --diff="main"

diffフィルターを使用することにより、指定したブランチ以降の差分のみをbootstrapしてくれるようです。
Changelogを見たところ、恐らく2.5.0以降で使用可能です(全然知らんかったゾ...)。
時間短縮になるかも・・・?

追記 ---
公式ドキュメントを見ると、ブランチだけではなく、コミットハッシュも対応していました。

--graph

公式ドキュメント

melos list --graph

graphを使用することによって、melosパッケージ内での各パッケージの依存関係をjson形式で見ることができます。
なんでこれ参照してるの?っていうのがぱっと分かるので、警察をするときに便利です。

閉廷

たぶんまだ知らない便利機能がたくさんあると思うので、みなさまも発信してみてください。

Discussion