ibrostudio / composer-custom-directory-installer
Installs: 12
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:composer-plugin
Requires
- php: ^8.2
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.2.12
- laravel/pint: ^1.13
- mockery/mockery: ^1.6
- pestphp/pest: ^2.33
- pestphp/pest-plugin-type-coverage: ^2.8
- phpstan/phpstan: ^1.10
README
This package is project based on Laravel Module Installer extended to work with different types of packages.
It allows installation of standalone packages into a custom directory instead of vendor/
.
Installation
In your main project, run
composer require ibrostudio/composer-custom-directory-installer
At the end of the composer installation, you will be asked to add the package in the "allow-plugins" section of your composer.json. Confirmation is mandatory
Configuration
In the composer.json of your package, set these keys :
"type": "custom-library", "extra": { "custom-directory-installer": { "directory": "DESTINATION_FOLDER" } }
Replace DESTINATION_FOLDER with the name of the directory, relative to the root of your main project where you want to install the package.
Example:
"type": "custom-library", "extra": { "custom-directory-installer": { "directory": "themes" } }
Usage
Simply require your composer package as usual:
composer require vendor_name/package_name
Your package will be installed in a subfolder called package_name in the directory defined in the extra section.
Options
Your package name can have sometimes a prefix or a suffix, like:
- vendor_name/theme-package_name
- vendor_name/package_name-theme
- vendor_name/platform-package_name-theme
For convenience and lisibility, you can specify the prefix and/or suffix in the extra configuration to exclude them from the folder name:
prefix
"name": "vendor_name/theme-my_project", "extra": { "custom-directory-installer": { "directory": "themes", "prefix": "theme-" } }
suffix
"name": "vendor_name/my_project-theme", "extra": { "custom-directory-installer": { "directory": "themes", "suffix": "-theme" } }
both
"name": "vendor_name/platform-my_project-theme", "extra": { "custom-directory-installer": { "directory": "themes", "prefix": "platform-", "suffix": "-theme" } }
In these 3 examples, the package will be installed in /themes/my_project.
TIP: laravel- and filament- are in-built prefixes, you don't have to include them.