sioweb/ccevent

Composer插件事件处理器,在安装器(post-[update|install]-cmd)完成后立即运行插件脚本。

安装次数: 1,568

依赖者: 3

建议者: 0

安全性: 0

星标: 1

关注者: 1

分支: 0

开放性问题: 0

类型:composer-plugin

3.0.0 2021-04-09 09:15 UTC

This package is auto-updated.

Last update: 2024-09-09 16:58:03 UTC


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