invertase / melos

🌋 A tool for managing Dart projects with multiple packages. With IntelliJ and Vscode IDE support. Supports automated versioning, changelogs & publishing via Conventional Commits.
https://melos.invertase.dev/~melos-latest
Apache License 2.0
1.17k stars 205 forks source link

fix: Detect if a package is flutter-based using SDK #755

Open provokateurin opened 1 month ago

provokateurin commented 1 month ago

Is there an existing issue for this?

Version

6.0.0

Description

Currently melos detects if a package is flutter based by checking if flutter is listed as a dependency. This is not entirely correct, as you can have a package that does not need flutter itself (so it has no dependency specified for it, but depends on another package that uses flutter. The correct way to detect if a package needs flutter is to check if environment.flutter is specified.

Steps to reproduce

  1. Create package A with dependency on flutter
  2. Create package B without dependency on flutter but with dependency on package A
  3. Run melos list --flutter.

Expected behavior

Both package A and B should be listed, but only A is present.

Screenshots

No response

Additional context and comments

No response

spydon commented 1 month ago

Good catch, would you like to work on a PR for this?

provokateurin commented 1 month ago

Sure, I'll give it a try.

provokateurin commented 1 month ago

Hm it seems I might be wrong, as it is also possible to not have the flutter SDK specified. Only the pubspec.lock always indicates if flutter is used or not (under the environment key).

This is a bit more complex than I anticipated, so I don't think I have the time to fix this myself given that I have no knowledge of the melos internals.