sunaoka / composer-vcs-export-plugin
Exports Composer VCS repositories to vendor directories applying .gitattributes export-ignore rules.
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:composer-plugin
Requires
- php: ^7.2.5 || ^8.0
- composer-plugin-api: ^2.0
- symfony/filesystem: ^5.0 || ^6.0 || ^7.0
- symfony/process: ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- composer/composer: ^2.8.5
- phpunit/phpunit: ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.2
This package is auto-updated.
Last update: 2025-07-08 07:59:10 UTC
README
Overview
This Composer plugin ensures that when installing packages from VCS repositories (such as Git) via the repositories
configuration, only the files allowed by .gitattributes
export-ignore
rules are placed in the vendor
directory.
It enables clean, distribution-like installs even when directly referencing VCS sources, helping maintain a tidy vendor/
with only the intended files from each package.
Features
- Applies
.gitattributes
export-ignore
rules to packages installed from VCS repositories - Ensures only distribution-ready files are present in
vendor/
- Works automatically during Composer install/update
- No configuration required for standard usage
Installation
Add the plugin to your project using Composer:
composer require sunaoka/composer-vcs-export-plugin
Usage
No additional configuration is needed.
When you install or update packages from VCS repositories (e.g., via the repositories
section in your composer.json
), this plugin will:
- Detect if the package was installed from a Git repository
- Use
git archive
to export files, respecting.gitattributes
export-ignore
rules - Replace the package directory in
vendor/
with the exported contents
Example
composer.json:
{ "repositories": [ { "type": "vcs", "url": "https://example.com/your-vendor/your-library.git" } ], "require": { "your-vendor/your-library": "^1.0", "sunaoka/composer-vcs-export-plugin": "^1.0" }, "config": { "allow-plugins": { "sunaoka/composer-vcs-export-plugin": true } } }
With this setup, only the files not marked with export-ignore
in .gitattributes
will be present in vendor/your-vendor/your-library
.
Requirements
- PHP 7.2.5 or later
- Composer 2.x
git
andunzip
command available in the system environment
Limitations
- Only works with Git repositories
- Requires the
.git
directory to be present in the installed package (i.e., VCS install, not dist) - May not work on environments where
git archive
orunzip
are unavailable (e.g., some Windows setups) - Does not affect packages installed via dist (zip/tarball)