前端开发
在 app/code/ 下脚手架生成 Magento 2…
当需要新建/脚手架一个 Magento 2 模块并生成其基础文件时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在 app/code/ 下脚手架生成 M特定
解决思路
- 校验输入:vendor 名必须为 PascalCase(首字母大写、仅字母数字),module 名必须为 PascalCase,并确认 app/code/{Vendor}/{Module} 目录尚不存在。
- 创建目录结构:app/code/{Vendor}/{Module}/,其中包含 registration.php、composer.json 和 etc/module.xml。
- 生成 registration.php:使用模板 assets/templates/registration.php.tpl,将 {{VENDOR}} 替换为 vendor 名,将 {{MODULE}} 替换为 module 名。
- 生成 composer.json:使用模板 assets/templates/composer.json.tpl,将 {{VENDOR}} 替换为 PascalCase vendor 名,将 {{MODULE}} 替换为 PascalCase module 名,将 {{vendor_kebabcase}} 替换为 kebab-case 连字符形式的 vendor 名,将 {{module_kebabcase}} 替换为 kebab-case 连字符形式的 module 名,将 {{DESCRIPTION}} 替换为描述,并把 composer_require 参数中的条目加入 require 段。
- 生成 module.xml:使用模板 assets/templates/module.xml.tpl,将 {{VENDOR}} 替换为 PascalCase vendor 名,将 {{MODULE}} 替换为 PascalCase module 名,将 {{SEQUENCE}} 替换为包含依赖的 <sequence> 块(无依赖时为空字符串)。
- PascalCase 转 kebab-case:在每个大写字母前插入连字符并全部小写(如 Custom# 示例:CustomFeature → custom-feature,ShoppingCartGraphQl → shopping-cart-graph-ql,CmsComponents → cms-components,MyModule → my-module)。
- 可选执行安装:若调用方要求,使用 hyva-exec-shell-cmd 技能确定环境与命令包装方式,运行 bin/magento setup:upgrade。
- 错误处理:vendor 名或 module 名不是 PascalCase 时中止并报告「Invalid vendor name '{name}': must start with uppercase letter and contain only alphanumeric characters」或对应 module 名错误;目录已存在时报告「Module already exists at app/code/{Vendor}/{Module}」;无法创建目录时报告「Failed to create directory app/code/{Vendor}/{Module}: {error}」;无法写入文件时报告「Failed to write {filename}: {error}」。
- 若在请求 Step 4 时 hyva-exec-shell-cmd 技能不可用,则跳过 setup:upgrade 并报告「Skipped setup:upgrade - hyva-exec-shell-cmd skill not available. Run manually: bin/magento setup:upgrade」。
适用边界 · 注意事项
- 需要生成的不是 Magento 2 模块(如其他框架或非 app/code/ 路径下的代码)。
- vendor 或 module 名无法满足 PascalCase 命名要求时。
- 目标目录 app/code/{Vendor}/{Module} 已存在时。