Composer plugin to share packages between projects using symlinks for improved development workflows.
Composer Shared Package Plugin is a Composer plugin that enables developers to share selected packages across multiple PHP projects by creating symlinks to a central dependencies directory. It streamlines development by allowing direct work on shared packages without needing to push them to a repository or modify the vendor folder directly, improving productivity during package testing and iteration.
PHP developers working on multiple projects that share common internal packages or libraries, particularly those in organizations or teams managing monorepo-like workflows without a full monorepo tool.
Developers choose this plugin over alternatives because it provides symlink-based sharing with selective package control and version management, avoiding the overhead of setting up private repositories or dealing with Composer's default vendor handling during active development. It uniquely supports working on development branches alongside stable versions using require-dev aliases.
:package: Composer plugin to share packages between projects with symlinks
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Creates symlinks from projects to a central dependencies directory, enabling real-time package testing without pushing to a repository, which streamlines development as highlighted in the README's workflow enhancement.
Organizes shared packages in subdirectories named by version (e.g., dev-master, 1.0.x-dev), allowing concurrent use of multiple versions across different projects, a core feature for testing.
Allows specifying packages to share via a configurable package-list with wildcards, giving fine-grained control over dependencies without affecting all packages, as detailed in the installation steps.
Supports require-dev aliases to work on development branches while keeping stable versions for production, facilitating seamless testing across projects, a key advantage noted in the usage examples.
Requires manual updates to keep shared packages current because Composer's lock file pins commits, making development branches not automatically update, a known issue documented in the README.
Needs extra configuration like symlink-base-path for virtual machines to handle path discrepancies, adding setup overhead and potential errors in cross-environment setups.
Relies on symlinks, which can cause issues in environments with poor symlink support or specific IDE limitations, reducing portability and increasing maintenance effort.