sunaoka / composer-vcs-export-plugin
Exports Composer VCS repositories to vendor directories applying .gitattributes export-ignore rules.
Installs: 25
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
Type:composer-plugin
pkg:composer/sunaoka/composer-vcs-export-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-10-14 02:58:41 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
.gitattributesexport-ignorerules 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 --dev sunaoka/composer-vcs-export-plugin
Or
composer global 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 archiveto export files, respecting.gitattributesexport-ignorerules - 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
gitandunzipcommand available in the system environment
Limitations
- Only works with Git repositories
- Requires the
.gitdirectory to be present in the installed package (i.e., VCS install, not dist) - May not work on environments where
git archiveorunzipare unavailable (e.g., some Windows setups) - Does not affect packages installed via dist (zip/tarball)