添加与移除微应用
逐步生成应用骨架、更新项目并手动移除应用,不使用不存在的命令。
添加应用
wu add vue explorador --no-install
wu add react busqueda --no-install
wu install
在项目根目录运行 add。两个位置参数依次为框架和名称。唯一支持的选项是 --no-install,可先生成多个应用,最后统一安装依赖。
不带 --no-install 时,add 使用与 wu install 相同的汇总器和写入器,保留根字段并传播 npm 错误。根清单没有 _wu 时会在生成前停止;可用 --no-install 手动声明依赖,或用 wu install --force 接管清单。
生成的内容
- 验证框架和名称,并检查目标目录是否已经存在。
- 在应用已用最大端口之后查找空闲端口;若没有空间,则从 5001 开始查找,并避开 shell 和代理端口。
- 生成
mf-<name>/,包含package.json、入口、组件和框架配置。不生成源文件wu.json。 - 如果配置来自
wu.config.json,则加入新应用并重写该文件。 - 将 shell 和应用声明汇总到受管理的根清单。
- 使用 npm 安装,除非传入
--no-install。
在使用依赖的应用或 shell 中声明特定依赖。add 保留自定义配置,并根据目录扩展 shared。JSON 错误包含行号和列号,不会将损坏的配置替换为新文件。
命名与 TypeScript
wu add react mf-checkout 会去掉传入名称的前缀,生成 mf-checkout/,不会重复添加 mf-。mf_ 前缀同样如此。空名称或仅包含该前缀的名称会被拒绝。目录已存在时也会失败。
当 supportsTs 支持时,该命令会启用 TypeScript,与 create 的快速模式保持一致。HTMX、Alpine 和 Stimulus 继续使用 JavaScript。其他模板无法通过 add 选项改用 JavaScript。
集成现有应用
add 用于生成新应用。要接入现有应用,请在 apps 中声明其 name、dir、framework、端口和命令;调整入口以完成 WU 注册,并检查 wu.json。然后运行 wu install、wu info、wu build,并在浏览器中验证挂载。
名称用于在运行时目录中标识应用,目录用于定位文件并解析依赖覆盖。修改其中一项时,请检查所有使用该字段的地方,不要认为两者可以互换。
移除或重命名
此版本未实现 wu remove,也没有重命名命令。移除应用时,需要删除 apps 中的条目,更新导航和挂载引用,再运行 wu install 重新计算依赖及覆盖配置。检查这些引用后,可以归档或删除应用目录。
重命名时,目录、wu.config.json、适配器注册的名称、wu.json 和 shell 使用的标识符必须保持一致。运行 wu doctor 查找过期的目录引用,并在发布前重新构建。
已确认的限制
没有 wu.config.json 时,add 使用自动发现计算依赖和端口,但不写入新配置。为了保持稳定拓扑,建议显式创建项目。生成文件失败会移除新目录;后续安装失败会以退出码 1 报告。
实现参考
wu-cli/src/commands/add.zigwu-cli/src/commands/install.zigwu-cli/src/config/names.zigwu-cli/tests/scaffold-writers.test.cjswu-cli/tests/scaffold-security.test.cjs