heyaikeedo / composer
Aikeedo Composer plugin to register custom installer for Aikeedo plugins/themese etc.
Installs: 4 992
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 1
Type:composer-plugin
pkg:composer/heyaikeedo/composer
Requires
- php: ^8.2
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.3
- phpcompatibility/php-compatibility: ^9.3
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.7
README
Aikeedo Composer plugin to register custom installer for Aikeedo plugins/themes.
Installation
composer require heyaikeedo/composer
Features
- Custom installer for
aikeedo-pluginandaikeedo-themepackage types - Automatic copying of public assets to the webroot
- Automatic cleanup of public assets on uninstall
- Support for glob patterns
Public Files Configuration
Aikeedo plugins can define public files/directories that should be copied to the webroot during installation. This is configured in the package's composer.json under extra.public.
Basic Syntax
{
"extra": {
"public": [
"path/to/file.js",
"path/to/directory",
{
"source": "source/path",
"target": "target/path"
}
]
}
}
Target Path Resolution (Model A)
The target path follows "Model A" where target is ALWAYS the final destination path:
| Target Format | Description | Result |
|---|---|---|
"file.js" |
Package dir + target | public/e/{vendor}/{pkg}/file.js |
"/file.js" |
Webroot + target | public/file.js |
"." |
Package dir + source basename | public/e/{vendor}/{pkg}/{basename} |
"/." or "/" |
Webroot + source basename | public/{basename} |
null (omitted) |
Package dir + source basename | public/e/{vendor}/{pkg}/{basename} |
"dir/*" |
Glob: contents copied to target | Contents copied to target directory |
Examples
1. Legacy String Format (preserves full path)
{
"extra": {
"public": ["widget/dist/index.html", "widget/dist/styles.css"]
}
}
Result:
widget/dist/index.html→public/e/{vendor}/{pkg}/widget/dist/index.htmlwidget/dist/styles.css→public/e/{vendor}/{pkg}/widget/dist/styles.css
2. Copy to Package Directory (no leading /)
{
"extra": {
"public": [
{
"source": "widget/dist/sdk.js",
"target": "sdk.js"
},
{
"source": "assets",
"target": "static"
}
]
}
}
Result:
widget/dist/sdk.js→public/e/{vendor}/{pkg}/sdk.jsassets/→public/e/{vendor}/{pkg}/static/
3. Copy to Webroot (leading /)
{
"extra": {
"public": [
{
"source": "widget/dist/sdk.js",
"target": "/sdk.js"
},
{
"source": "assets",
"target": "/static/assets"
}
]
}
}
Result:
widget/dist/sdk.js→public/sdk.jsassets/→public/static/assets/
4. Using Basename Shortcuts (. and /.)
{
"extra": {
"public": [
{
"source": "widget/dist",
"target": "."
},
{
"source": "widget/dist",
"target": "/."
},
{
"source": "widget/dist"
}
]
}
}
Result:
"."→public/e/{vendor}/{pkg}/dist/(package dir + basename)"/."→public/dist/(webroot + basename)- No target →
public/e/{vendor}/{pkg}/dist/(same as".")
5. Glob Patterns (copy contents)
{
"extra": {
"public": [
{
"source": "widget/dist/*",
"target": "/assets"
}
]
}
}
Result:
- Contents of
widget/dist/(e.g.,index.html,css/,js/) →public/assets/ - Files become
public/assets/index.html,public/assets/css/..., etc.
Environment Variables
| Variable | Description | Default |
|---|---|---|
PUBLIC_DIR |
Custom webroot path | public |
Package Types
This plugin handles the following package types:
aikeedo-plugin- Installed toextra/extensions/{vendor}/{package}aikeedo-theme- Installed toextra/extensions/{vendor}/{package}
License
See LICENSE file.