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.
- 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
Add the plugin to your project using Composer:
composer require --dev sunaoka/composer-vcs-export-pluginOr
composer global require sunaoka/composer-vcs-export-pluginNo 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
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.
- PHP 7.2.5 or later
- Composer 2.x
gitandunzipcommand available in the system environment
- 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)