发布 Webman 插件到 Gitee 完整教程
第一步:更新 composer.json
当前 composer.json 缺少关键依赖声明。建议做以下修改:
composer.json
(修改)
第二步:创建独立 Git 仓库并推送到 Gitee
在命令行中依次执行以下命令:
cmd
复制
插入
新建文件
保存
插入到终端
应用
:: 1. 进入插件目录
cd d:\www\email-send\plugin\wecom-alarm
:: 2. 初始化独立的 Git 仓库
git init
:: 3. 添加所有文件
git add .
:: 4. 提交
git commit -m "feat: 初始提交 - Webman 企业微信告警插件"
:: 5. 在 Gitee 上手动创建一个仓库,名字建议为 wecom-alarm
:: 6. 关联远程仓库并推送(替换为你的实际仓库地址)
git remote add origin https://gitee.com/你的用户名/wecom-alarm.git
git branch -M master
git push -u origin master
注意:在 Gitee 创建仓库时,不要勾选"使用 README 初始化仓库",否则会冲突。
第三步:注册到 Packagist(让 composer require 能直接安装)
用 GitHub/GitLab 账号登录(如果没有,注册一个 Packagist 账号)
点击右上角 Submit 按钮
在 Repository URL 输入你的 Gitee 仓库地址,例如:
https://gitee.com/你的用户名/wecom-alarm.git
点击 Check,确认无误后点击 Submit
成功后,同部门同事就可以直接通过以下命令安装了:
composer require tencent/wemail-alarm
第四步:使用方式(写进 README)
给同事的安装步骤:
bash
复制
插入
新建文件
保存
插入到终端
应用
1. 进入 webman 项目根目录
cd your-webman-project
2. 安装插件
composer require tencent/wemail-alarm
3. 修改配置文件
编辑 plugin/wecom-alarm/config/app.php
将 webhook 替换为自己的企业微信机器人 Webhook 地址
将 project_name 改为自己的项目名称
配置说明:
配置项 说明
enable 插件总开关
webhook 企业微信群机器人 Webhook 地址
project_name 项目名称(告警消息中显示)
env 当前环境 dev/test/pro
alarm_env_list 哪些环境开启告警
limit_expire 防抖时间(秒),相同异常间隔内只发一次
ignore_exception 忽略的异常类列表
获取 Webhook 地址:
打开企业微信群聊
点击群设置 → 群机器人 → 添加机器人 → 复制 Webhook 地址
填入 config/app.php 的 webhook 配置项
第五步:后续更新流程
插件有更新时,按以下流程发布新版本:
cmd
复制
插入
新建文件
保存
插入到终端
应用
:: 1. 修改代码后进入插件目录
cd d:\www\email-send\plugin\wecom-alarm
:: 2. 提交变更
git add .
git commit -m "fix: 修复 xxx 问题"
:: 3. 打标签(版本号)
git tag -a v1.0.0 -m "v1.0.0"
:: 4. 推送代码和标签
git push origin master
git push origin --tags
:: 5. Packagist 会自动检测到新版本(通过 Webhook),无需手动操作
可选:不用 Packagist,直接通过 Gitee 安装
如果不想注册 Packagist,可以在项目的 composer.json 中添加自定义仓库:
json
复制
插入
新建文件
保存
应用
{
"repositories": [
{
"type": "vcs",
"url": "https://gitee.com/你的用户名/wecom-alarm.git"
}
],
"require": {
"tencent/wemail-alarm": "^1.0"
}
}
这样同事安装时需要先在 composer.json 中添加上面的 repositories 配置,然后执行 composer require tencent/wemail-alarm。
总结步骤
步骤 操作 位置
1 更新 composer.json(已完成) 本机
2 git init + push 推送到 Gitee 本机 → Gitee
3 在 Packagist 提交仓库地址 packagist.org
4 同事 composer require tencent/wemail-alarm 同事机器
插件文件我已经帮你更新了 composer.json(添加了 guzzlehttp/guzzle 依赖和 keywords),现在只需要执行第二步和第三步即可完成发布。
解决别的项目引用后 无法同步配置问题
PSR-4 映射不完整:composer.json 只映射了 app/ 目录,api/Install.php 的命名空间没被注册,导致 webman 找不到插件的安装入口
缺少配置发布逻辑:Install.php 没有把配置文件从 vendor/ 拷贝到 plugin/ 目录
webman 插件工作原理
code
复制
插入
新建文件
保存
应用
composer require xxx
↓
post-package-install 触发 support\Plugin::install
↓
扫描 PSR-4 命名空间,找 {namespace}Install 类
↓
如果定义了 WEBMAN_PLUGIN 常量 → 调用 install(true/false)
↓
我们的 install() 负责把配置从 vendor 拷贝到 plugin/
解决方案:修改两个文件
读取
composer.json
L1-End
深度思考
改动 1:composer.json --- 注册 api/ 命名空间,让 webman 能找到 Install 类
composer.json
(修改)
+2
-1
查看文件
深度思考
改动 2:api/Install.php --- 添加 WEBMAN_PLUGIN 常量 + 配置发布逻辑
Install.php
(修改)
+64
-2
查看文件
深度思考
验证最终文件:
读取
composer.json
L1-End
读取
Install.php
L1-End
深度思考
改动完成。总结一下做了什么以及为什么要这样做:
修改总结
问题根因
问题 原因 解决
配置在 vendor 里改不了 webman 的插件机制要求 Install 类主动把配置从 vendor/ 拷贝到 plugin/ publishConfig() 方法
装了插件但没生效 Install 类缺少 WEBMAN_PLUGIN 常量,webman 检测不到这是一个插件 加 const WEBMAN_PLUGIN = true
Install 类找不到 composer.json 的 PSR-4 只映射了 app/,没映射 api/ 加 api/ 映射
配置发布策略
code
复制
插入
新建文件
保存
应用
首次安装 (install(true)):
vendor/tencent/wemail-alarm/config/* → 全部拷贝到 plugin/wecom-alarm/config/*
更新安装 (install(false)):
autoload.php → 覆盖(内部配置,用户不应修改)
middleware.php → 覆盖(内部配置)
exception.php → 覆盖(内部配置)
app.php → 跳过(保留用户已修改的 Webhook、项目名等)
其他项目(如 Laravel)的做法
对比一下主流的配置发布方式:
框架 方式
Laravel php artisan vendor:publish --tag=config --- 发布到 config/ 目录
Symfony Flex recipes --- 配置文件在独立的 recipe 仓库
Webman support\Plugin::install 检测 WEBMAN_PLUGIN 常量,调用 Install::install()
每次修改后 需要打新版本号才会被更新到i
git add .
git commit -m "fix: 修复boot.php缺失问题,发布app目录源码到plugin下"
git tag -a v1.2.0 -m "v1.2.0"
git push origin master
git push origin --tags
//引用
composer require tencent/wemail-alarm --ignore-platform-req=ext-http