sioweb / ccevent
Composer插件事件处理器,在安装器(post-[update|install]-cmd)完成后立即运行插件脚本。
Requires
- php: ^7.1||^8.0
- composer-plugin-api: ^1.1||^2.0
README
此模块允许在安装和更新后执行模块。这在开发环境中尤其有用,可以直接在安装后设置Git仓库,以编辑供应商模块。
现在可以在安装时一次性执行一个函数。例如,对数据库进行调整、移动文件、清空自定义缓存。
为什么?
我的所有模块都位于一个私有仓库中,每次我推送新的Git标签时都会更新。这使得我的所有插件都可以干净地安装、版本控制和可访问。为了让我能够轻松地进一步开发这些插件,我需要一个可以在所有插件中安装Git仓库的功能。这样我就可以在供应商目录中工作,然后轻松地将更改推送到我的私有仓库。
简而言之,通过此插件与Apply Environment for Contao一起使用,我可以方便地在供应商目录中工作。
如何使用?
控制台
composer req sioweb/ccevent
composer.json
"scripts": {
"package-scripts": [
"Your\\Vendor\\Composer\\CLASS_NAME::CLASS_METHOD"
"ls -la"
],
}
传递参数
虽然不常见,但可以向调用的类传递参数。只需在composer.json中按照以下方式记录即可。
Your\\Vendor\\Composer\\ScriptHandler::install --ein-argument=foo --noch-eins=test
参数将作为数组传递,然后可以像在下面的示例扩展中那样将其格式化为更易用的数组。
有示例吗?
当然,https://github.com/Sioweb/CCEventsExample 是一个没有功能的完整Contao模块。控制台在安装时详细输出CCEvents示例的信息。要测试模块,只需在控制台安装包即可。
composer req sioweb/cceventsexample
注意: 输出非常长且容易混乱。最好将输出复制到编辑器中。所有功能输出都缩进了两个制表符,并以一个减号 (-) 开头
脚本也可以仅限于“localhost”或“dev”吗?
是的。CCEvent将按顺序遍历所有脚本,并检查这些脚本是否包含IF条件。如果条件为假,则忽略所有后续脚本。要将脚本作为条件标记,必须按照以下模式构建
@config.PARAMETER_NAME == 1
@config.PARAMETER_NAME == true // wird später in 1 umgewandelt
@config.PARAMETER_NAME >= 1 && config.PARAMETER_NAME <= 10 // Das zweite config benötigt kein @
@config.PARAMETER_NAME == localhost
支持的操作符 [>, <, >=, <=, ==, !=]
条件可以使用多次
"scripts": {
"package-scripts": [
"@config.PARAMETER_NAME > 10",
"Your\\Vendor\\Composer\\CLASS_NAME::CLASS_METHOD"
"@config.PARAMETER_NAME < 20",
"ls -la"
],
}
注意: 条件从Composer的config.json
中获取数据。计划在将来也能够检查环境变量:@environment.PARAMETER_NAME
。目前还不支持像@config.extra.PARAMETER_NAME
这样的嵌套。
config.json
该文件位于$COMPOSER_HOME/config.json
下,或者至少应该在那里创建。在那里可以记录将在条件中使用的参数。
示例
{
"config": {
"localhost": true,
"whatEnvironmentIsThis": "localhost",
"WhatEver": 10
}
}
脚本示例
@config.localhost == 1 && config.whatEnvironmentIsThis == "localhost" && config.WhatEver > 5