You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a fundamental rewrite of the Composer integration. Now, instead
of adding the loaded paths to Composer's search path (by creating path
repositories for them), we replace the packages downloaded by Composer
that can be found in the loaded paths by symlinks to the local paths.
Doing so requires us to hook into the autoload dumper, which now has to
respect the rules in the local path, not those obtained from Packagist.
All of this should hopefully fix several issues, most importantly:
- Composer's lock file will be written before Studio does its magic,
therefore not causing any conflicts with other developers' setups.
- Different version constraints on symlinked packages won't cause
problems anymore. Any required packages that are found in loaded paths
will be loaded, no matter the branch or version they are on.
Open questions:
- How should packages be handled that have not yet been added to
Packagist? (Proposed solution: Create path repositories for the loaded
paths, but *append* them instead of *prepending*, so that they will
only be used as fallback, if Packagist does not yield any results.)
- Should we validate the constraints from composer.json before creating
symlinks? With this setup, everything might be working locally, but
not when downloading the package from Packagist (as another version
may be downloaded instead).
Refs #52, #58, #65, #72.
0 commit comments