webman插件打包为composer拓展包
发布 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.gitgit branch -M mastergit push -u origin master注意在 Gitee 创建仓库时不要勾选使用 README 初始化仓库否则会冲突。第三步注册到 Packagist让 composer require 能直接安装打开 https://packagist.org/用 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/proalarm_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 mastergit 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 本机 → Gitee3 在 Packagist 提交仓库地址 packagist.org4 同事 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.jsonL1-End深度思考改动 1composer.json — 注册 api/ 命名空间让 webman 能找到 Install 类composer.json(修改)2-1查看文件深度思考改动 2api/Install.php — 添加 WEBMAN_PLUGIN 常量 配置发布逻辑Install.php(修改)64-2查看文件深度思考验证最终文件读取composer.jsonL1-End读取Install.phpL1-End深度思考改动完成。总结一下做了什么以及为什么要这样做修改总结问题根因问题 原因 解决配置在 vendor 里改不了 webman 的插件机制要求 Install 类主动把配置从 vendor/ 拷贝到 plugin/ publishConfig() 方法装了插件但没生效 Install 类缺少 WEBMAN_PLUGIN 常量webman 检测不到这是一个插件 加 const WEBMAN_PLUGIN trueInstall 类找不到 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 --tagconfig — 发布到 config/ 目录Symfony Flex recipes — 配置文件在独立的 recipe 仓库Webman support\Plugin::install 检测 WEBMAN_PLUGIN 常量调用 Install::install()每次修改后 需要打新版本号才会被更新到igit add .git commit -m fix: 修复boot.php缺失问题发布app目录源码到plugin下git tag -a v1.2.0 -m v1.2.0git push origin mastergit push origin --tags//引用composer require tencent/wemail-alarm --ignore-platform-reqext-http

相关新闻