-
Notifications
You must be signed in to change notification settings - Fork 233
Allow third-party tools to resolve dependencies #3199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Hmm, should we consider solving this problem by adding first class support for local dependency overrides with something like a Maybe, this isn't a problem in reality, but if we encourage third-party tools to generate On the flip side: we could also simplify our logic and only check the generator when timestamps don't align. |
|
For the record, I'm not principally opposed to this change, just considering/brainstorming possible future implications :) |
|
I think your right @jonasfj, that a cleaner, more universal approach is to support something like Currently, melos is working around |
|
Following up on my last comment, I'm closing this PR since it's an attempt to enable a solution which is already a workaround. |
|
In any case - thanks for the contribution. I think it highlights an area where we need to find a better solution! |
|
I would note there are places (at least in Flutter tooling) where 'third-party tool detection and doing something different' is already a thing, e.g. https://github.com/flutter/flutter/blob/master/packages/flutter_tools/test/general.shard/dart/pub_get_test.dart#L49 I'm not against having a
I'd note that Melos doesn't generate the |
Tools like melos need to be able to resolve dependencies, to link up local packages for development.
With this change, up-to-date checks of
package_config.json,.packagesandpubspec.lockare skipped ifpackage_config.jsonhas been generated by a tool other thanpub. This behavior is limited topub runanddart run.pub getdoes the normal checks and overrides third-party modifications.This change also eliminates an unnecessary call of
Entrypoint.assertUpToDate. Just a few lines above,Entrypoint.resolveExecutableis called, which callsassertUpToDatein the process.